MySQL架构实战1--主主复制

#MySQL实战–主主复制

1 开启二进制复制

  1. 关闭MySQL服务
service mysqld stop
  1. 添加配置
vi /etc/my.cnf

添加以下内容:

log-bin=mysql-bin1  # 二进制文件名
server-id=1   # 服务器id,唯一
binlog-format=mixed #二进制日志格式,有row、statement、mixed三种格式,
#row指的是把改变的内容复制过去,而不是把命令在从服务器上执行一遍,
#statement指的是在主服务器上执行的SQL语句,在从服务器上执行同样的语句。
#MySQL默认采用基于语句的复制,效率比较高。mixed指的是默认采用基于语句
#的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
binlog-do-db=database   #同步的数据库名称

另一台

log-bin=mysql-bin2
server-id=2
binlog-format=mixed
binlog-do-db=database

######注:
######1. server-id必须是唯一的,每台机器不同。
######2. 如果你不设置server_id(或者显式地将其设置为默认值0),主服务器将拒绝从从节点获得任何连接。
######3. 在复制设置中获得最大的持久性和一致性,对于事务请使用InnoDB,您应该使用innodb_flush_log_at_trx_commit=1和sync_binlog=1在主节点my.cnf文件中设置。
######4. 确保您的复制母版上没有启用skip_networking系统变量。如果网络已被禁用,则从服务器无法与主服务器通信,并且复制失败。

2 创建用于复制的用户

创建一个仅用于复制进程的用户,官方示例:

mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';

实战使用:

mysql> CREATE USER 'repl'@'从节点ip' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从节点ip';

3 执行初始化脚本

  1. 建库
  2. 建表
    ######注:使用这种方式最简单,否则还要使用其他备份策略进行操作,提高了运维工作量。请按自己的情况使用。

4 查看主节点当前日志位置

查看复制起点,在主节点上查看:

mysql> FLUSH TABLES WITH READ LOCK;  # 锁住表,保证同步期间不会出现数据修改
mysql > SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin1.000001 | 619       | test         | manual,mysql   |
+------------------+----------+--------------+------------------+

######注:如果能够保证执行执行同步时,不会有客户端进行写操作,可以不用锁(不建议)。

5 设置复制(从)

得到的日志座标,写在下面命令的master_log_pos属性上。

mysql> CHANGE MASTER TO
    -> master_host='主IP',
    -> master_port=3306,
    -> master_user='repl',
    -> master_password='password',
    -> master_log_file='mysql-bin1.000001',
    -> master_log_pos=619;

6 启动和检查(从)

mysql> start slave;
mysql> show slave status\G; # Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes 即成功

7 主节点释放锁

mysql> unlock tables;

8 测试

往主节点中修改数据,去从节点中查询修改后的数据,验证主备是否真正成功。

9 按照同样的方法配主

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章