mysql主从同步

主:192.168.2.67

从:192.168.2.211

主服务器操作

vi /etc/my.cnf

server-id=189  //可以用IP的后三位做唯一的标识
log-bin=mysql-bin   //开启二进制文件,并已mysql-bin为文件头。
binlog-do-db=boolaw  //指定需要备份的库,可设置多行
//binlog-ignore-db=mysql 设置忽略的库
binlog-format=mixed //设置日志格式,这里用混合的

/usr/local/mysql/bin/mysql -uroot -p

mysql>grant replication slave on *.* to rsync@'192.168.2.211' identified by '123456';//给用户rsync开启slave权限 注意 必须*.*不然报错

mysql>flush privileges;//刷新权限

mysql>flush tables with read lock;  //锁定表操作 用来记录Position值 用来和从服务器同步 不然会出现问题


mysql>show master status; //查看File和Position值 

mysql>unlock tables; //解锁 此操作一定要和从服务器同步操作 不然会照成Position值不同步而照成数据不同步


从服务器操作

vi /etc/my.cnf

server-id=190  //必须比主服务器要大

relay-log=mysql-relay

#master-host=10.10. 0.119   //设置主机

#master-user=boolaw       //同步用户帐号

#master-password=123456     //设置密码

#master-port=3306

#master-connect-retry=60    //预设重试间隔60

replicate-do-db=boolaw        //告诉slave只做boolaw数据库的更新

//replicate-ignore-db=mysql 设置忽略的库

上面注释掉的内容 在mysql重启以后命令设置比较好 不然有时候mysql启动不了


mysql>stop slave;

mysql>change master to                       从指定位置重新同步运行这个命令即可

     >master_host='192.168.2.67',

     >master_user='rsync',                            master端创建的用于主从同步的账户和密码

     >master_password='123456',

     >master_port='3306',                             master端设置的client端使用的端口号。

     >master_log_file='mysql-bin.000047',             master端记录的file值

     >master_log_pos=391592414;                       master端记录的position值 

mysql>start slave;   一定要设置完这个值,并启动  再在主服务器unlock tables; 

mysql>show slave status \G

查看上面的结果Slave_IO_Running: Yes 和Slave_SQL_Running: Yes  2个都为yes则证明主从同步正常,如果有任一个显示NO,则证明同步有问题。

主:show master status; 从:show slave status \G命令来查看是不是同步了


运行了1天 发现老是中断 可能是主键冲突


mysql主从同步常见异常及恢复方法

1. 一般的异常只需要跳过一步即可恢复


>slave stop;


>SET GLOBAL sql_slave_skip_counter = 1;


>slave start;

2.断电导致主从不能同步时,通主库的最后一个bin-log日志进行恢复


在主库服务器上,mysqlbinlog mysql-bin.xxxx > binxxxx.txt


tail -n 100000  binxxxx.txt > tail-binxxxx.txt


vim tail-binxxxx.txt 打开tail-binxxxx.txt文件找到最后一个postion值


然后在从库上,change host to 相应正确的值


>slave stop;


>change master to master_host='ip', master_user='username', master_password='password', master_log_file='mysql-bin.xxxx', master_log_pos=xxxx;


>slave start;


>show slave status\G;


 3.主键冲突、表已存在等错误代码如1062,1032,1060等,可以在mysql主配置文件指定


略过此类异常并继续下条sql同步,这样也可以避免很多主从同步的异常中断


[mysqld]


slave-skip-errors = 1062,1032,1060

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值