美文网首页
mysql 实现主从同步

mysql 实现主从同步

作者: aoshi | 来源:发表于2018-02-01 16:36 被阅读0次

环境介绍

(主)环境  :linux(centos 7.0.2)  Mysql(5.6.37)  IP:192.168.1.33
(从)环境 :linux(centos 7.0.2)   Mysql(5.6.36)  IP:192.168.1.35

主环境配置

1.修改mysql的配置文件  my.cnf  my.ini  我的配置文件路径是  /etc/my.cnf
   [mysqld]
   log-bin=mysql-bin    (必须配置)   启用二进制日志
   server-id=1          (必须配置)    为本台服务器配置唯一的Server ID
   binlog-do-db=mstest  (可选配置)要同步的数据库名,要同步多个数据库,就多加几个replicate-db-db=数据库名
   binlog-ignore-db=mysql (可选配置)//要忽略的数据库

2.添加从库权限账号
  create user as_test;
  GRANT REPLICATION SLAVE ON *.* TO 'as_test'@'192.168.1.35' IDENTIFIED BY 'password';

  flush privileges;      //刷新权限

3.重启主服务器
  /bin/systemctl restart mysqld.service(centos)  
  /bin/systemctl restart mysql.service(ubuntu)

4.查看主服务器状态
 show master status;

从环境配置

1.修改mysql的配置文件  my.cnf  my.ini  我的配置文件路径是  /etc/my.cnf
   [mysqld]
   log-bin=mysql-bin    (必须配置)   启用二进制日志
   server-id=2          (必须配置)    为本台服务器配置唯一的Server ID
   replicate-do-db=mstest  (可选配置)#在master端不指定binlog-do-db,在slave端用replication-do-db来过滤,要同步多个数据库,就多加几个replicate-db-db=数据库名
   binlog-ignore-db=mysql (可选配置)//要忽略的数据库
   relay-log=mysqld-relay-bin

2.配置连接主服务器的信息
  change master to master_host='123.56.247.111',master_user='as_user',master_password='JianGuoWang',master_log_file='mysql-bin.000001', master_log_pos=120;

  flush privileges;      //刷新权限
  start slave;

3.重启从服务器
  /bin/systemctl restart mysqld.service(centos)  
  /bin/systemctl restart mysql.service(ubuntu)

 4.查看从服务器状态
  show slave status;

到此可以进行主从测试了。

提示:

主服务器:
提示1:如果你不配置server-id或者配置值为0,那么主服务器将拒绝所有从服务器的连接。
提示2:在使用InnoDB的事务复制,为了尽可能持久和数据一致,你应该在my.cnf里配置innodb_flush_log_at_trx_commit=1 和 sync_binlog=1;
For the greatest possible durability and consistency in a replication setup using InnoDB with transactions, you should useinnodb_flush_log_at_trx_commit=1 and sync_binlog=1 in the master my.cnf file.
提示3:确保主服务器里的skip-networking选项未启用,如果网络被禁用,你的从服务器将不能与主服务器通信并且复制失败。

从服务器:
提示1:如果有多个从服务器,每个服务器的server-id不能重复,跟IP一样是唯一标识,如果你没设置server-id或者设置为0,则从服务器不会连接到主服务器。
提示2:一般你不需要在从服务器上启用二进制日志,如果你在从服务器上启用二进制日志,那你可用它来做数据备份和崩溃恢复,或者做更复杂的事情(比如这个从服务器用来当作其它从服务器的主服务器)

FAQ

在搭建mysql主主复制的时候,创建一个新的具有replicaion权限的新用户,刚开始的操作如下: 
mysql> GRANT REPLICATION SLAVE ON test.* TO ‘server01’@’%’ IDENTIFIED BY ‘server01’; 
会提示错误:ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

错误的原因是因为,replication权限是一个全局权限,不可以指定在某一个库上,所以,把创建用户语句更改为如下即可:

mysql> GRANT REPLICATION SLAVE ON . TO ‘server01’@’192.168.40.129’ IDENTIFIED BY ‘568888’; 
Query OK, 0 rows affected (0.00 sec)

ok,一切正常,但是,为了安全起见,在创建新的用户的时候,最好指定登陆地址,不然别人拿着你的账号就要干坏事儿了,虽然这个账号只具备replication权限,但是也是具有危险性的。所以,最后的语句更改为:

mysql> GRANT REPLICATION SLAVE ON . TO ‘server01’@’192.168.40.129’ IDENTIFIED BY ‘568888’; 
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges; 
Query OK, 0 rows affected (0.01 sec)

相关文章

网友评论

      本文标题:mysql 实现主从同步

      本文链接:https://www.haomeiwen.com/subject/sjbdzxtx.html