mysql数据库互为主从配置
mysql主从配置小记:
共有四台机器: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。
0)准备工作
在四台机器上面安装好mysql后,创建用于同步的账号。
添加账户:
INSERT '%' , 'test' ,password( 'test' ), 'Y' , 'Y' , 'Y' , 'Y' , 'Y' , 'Y' ); |
刷新数据库:
FLUSH |
1)配置A-C互为主从
修改A配置文件为:
server-id replicate- do -db=test replicate- do -db=test_admin log-bin=mysql-bin log-slave-updates replicate-wild- do -table=test.% replicate-wild- do -table=test_admin.% binlog-ignore-db=mysql slave-skip-errors=all |
修改C配置文件为:
server-id binlog- do -db=test binlog- do -db=test_admin log-bin=mysql-bin log-slave-updates replicate-wild- do -table=test.% replicate-wild- do -table=test_admin.% binlog-ignore-db=mysql slave-skip-errors=all |
重启mysql是配置生效
将A设置为主:
停止同步:
slave |
清空服务器master日志:
reset |
授权同步账号:
GRANT 'test' @ '%' IDENTIFIED 'test' ; |
刷新授权:
flush |
锁定数据库:
flush lock ; |
将C设置为从:
停止同步:
slave |
配置同步信息:
CHANGE '10.1.10.28' , 'test' , 'test' , 'mysql-bin.000001' , |
将C设置为主:
停止同步:
slave |
清空服务器master日志:
reset |
授权同步账号:
GRANT 'test' @ '%' IDENTIFIED 'test' ; |
刷新授权:
flush |
锁定数据库:
flush lock ; |
将A设置为从:
停止同步:
slave |
配置同步信息:
CHANGE '10.1.10.30' , 'test' , 'test' , 'mysql-bin.000001' , |
2)将B设置为A的从
server-id replicate- do -db=test replicate- do -db=test_admin log-bin=mysql-bin log-slave-updates replicate-wild- do -table=test.% replicate-wild- do -table=test_admin.% binlog-ignore-db=mysql slave-skip-errors=all |
重启mysql服务
停止同步:
slave |
配置同步信息:
CHANGE '10.1.10.28' , 'test' , 'test' , 'mysql-bin.000001' , |
启动同步:
slave |
3)将D设置为C的从
server-id replicate- do -db=test replicate- do -db=test_admin log-bin=mysql-bin log-slave-updates replicate-wild- do -table=test.% replicate-wild- do -table=test_admin.% binlog-ignore-db=mysql slave-skip-errors=all |
重启mysql服务
停止同步:
slave |
配置同步信息:
CHANGE '10.1.10.30' , 'test' , 'test' , 'mysql-bin.000001' , |
启动同步:
slave |
完成之后可以创建添加数据测试一下是否可以。
下面是常见错误处理:
1) change Last_IO_Error: 'repl1@IP:3306' - 2) 在没有解锁的情况下停止slave进程: mysql> ERROR 3) change mysql> -> 'IP' -> 'USER' , -> 'PASSWD' , -> 'mysql-bin.000002' , -> ERROR in your for the 'master_user=' USER', master_password= 'PASSWD' , master_log_file= 'mysql-bin.000002' at 4) 在没有停止slave进程的情况下change mysql> ', USER ', PASSWD ', mysql-bin.000001',master_log_pos=106; ERROR 5) A Last_IO_Error: these for replication slave this does using it). 查看server-id mysql> 'server_id' ; 手动修改server-id mysql> set global mysql> 6)change |