时间:2021-07-01 10:21:17 帮助过:10人阅读
共有四台机器:A(10.1.10.28),B(10.1.10.29),C(10.1.10.30),D(10.1.10.31)。配置后结果:A-C互为主从,B为A的slave,D为C的slave
mysql主从配置小记:
- <br>INSERT INTO user (Host,User, Password,Select_priv,Insert_priv,Update_priv,Delete_priv, Create_priv,Drop_priv) VALUES('%','test',password('test'),'Y','Y','Y','Y','Y','Y'); <br> <br>刷新数据库: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>FLUSH PRIVILEGES; <br> <br><strong>1)配置A-C互为主从 <br></strong>修改A配置文件为: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>server-id = 1 <br>replicate-do-db=test <br>replicate-do-db=test_admin <br>log-bin=mysql-bin <br>log-slave-updates <br>replicate-wild-do-table=test.% <br>replicate-wild-do-table=test_admin.% <br>binlog-ignore-db=mysql <br>slave-skip-errors=all <br> <br>修改C配置文件为: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>server-id = 3 <br>binlog-do-db=test <br>binlog-do-db=test_admin <br>log-bin=mysql-bin <br>log-slave-updates <br>replicate-wild-do-table=test.% <br>replicate-wild-do-table=test_admin.% <br>binlog-ignore-db=mysql <br>slave-skip-errors=all <br> <br>重启mysql是配置生效 <br>将A设置为主: <br>停止同步: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>slave stop; <br> <br>清空服务器master日志: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>reset master; <br> <br>授权同步账号: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>GRANT REPLICATION SLAVE ON *.* TO 'test'@'%' IDENTIFIED BY 'test'; <br> <br>刷新授权: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>flush privileges; <br> <br>锁定数据库: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>flush tables with read lock; <br> <br>将C设置为从: <br>停止同步: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>slave stop; <br> <br>配置同步信息: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>CHANGE MASTER TO MASTER_HOST='10.1.10.28', MASTER_USER='test', MASTER_PASSWORD='test', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; <br> <br>将C设置为主: <br>停止同步: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>slave stop; <br> <br>清空服务器master日志: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>reset master; <br> <br>授权同步账号: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>GRANT REPLICATION SLAVE ON *.* TO 'test'@'%' IDENTIFIED BY 'test'; <br> <br>刷新授权: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>flush privileges; <br> <br>锁定数据库: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>flush tables with read lock; <br> <br>将A设置为从: <br>停止同步: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>slave stop; <br> <br>配置同步信息: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>CHANGE MASTER TO MASTER_HOST='10.1.10.30', MASTER_USER='test', MASTER_PASSWORD='test', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; <br> <br><strong>2)将B设置为A的从 <br></strong> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>server-id = 2 <br>replicate-do-db=test <br>replicate-do-db=test_admin <br>log-bin=mysql-bin <br>log-slave-updates <br>replicate-wild-do-table=test.% <br>replicate-wild-do-table=test_admin.% <br>binlog-ignore-db=mysql <br>slave-skip-errors=all <br> <br><br>重启mysql服务 <br>停止同步: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>slave stop; <br> <br>配置同步信息: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>CHANGE MASTER TO MASTER_HOST='10.1.10.28', MASTER_USER='test', MASTER_PASSWORD='test', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; <br> <br>启动同步: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>slave start; <br> <br><strong>3)将D设置为C的从</strong> <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>server-id = 4 <br>replicate-do-db=test <br>replicate-do-db=test_admin <br>log-bin=mysql-bin <br>log-slave-updates <br>replicate-wild-do-table=test.% <br>replicate-wild-do-table=test_admin.% <br>binlog-ignore-db=mysql <br>slave-skip-errors=all <br> <br>重启mysql服务 <br>停止同步: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>slave stop; <br> <br>配置同步信息: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>CHANGE MASTER TO MASTER_HOST='10.1.10.30', MASTER_USER='test', MASTER_PASSWORD='test', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; <br> <br>启动同步: <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>slave start; <br> <br>完成之后可以创建添加数据测试一下是否可以。 <br><strong>下面是常见错误处理:</strong> <br><br>1) <br>change master导致的: <br>Last_IO_Error: error connecting to master 'repl1@IP:3306' - retry-time: 60 retries <br>2) <br>在没有解锁的情况下停止slave进程: <br>mysql> stop slave; <br>ERROR 1192 (HY000): Can't execute the given command because you have active locked tables or an active transaction <br>3) <br>change master语法错误,落下逗号 <br>mysql> change master to <br>-> master_host='IP' <br>-> master_user='USER', <br>-> master_password='PASSWD', <br>-> master_log_file='mysql-bin.000002', <br>-> master_log_pos=106; <br>ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'master_user='USER', <br>master_password='PASSWD', <br>master_log_file='mysql-bin.000002' at line 3 <br><br>4) <br>在没有停止slave进程的情况下change master <br>mysql> change master to master_host=‘IP', master_user='USER', master_password='PASSWD', master_log_file='mysql-bin.000001',master_log_pos=106; <br>ERROR 1198 (HY000): This operation cannot be performed with a running slave; run STOP SLAVE first <br><br>5) <br>A B的server-id相同: <br>Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; <br>these ids must be different for replication to work (or the --replicate-same-server-id option must be used on <br>slave but this does not always make sense; please check the manual before using it). <br>查看server-id <br>mysql> show variables like 'server_id'; <br>手动修改server-id <br>mysql> set global server_id=2; #此处的数值和my.cnf里设置的一样就行 <br>mysql> slave start; <br>6)change master之后,查看slave的状态,发现slave_IO_running 为NO </li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre>