mysql数据库互为主从配置(二)

来源:互联网 发布:sql统计每小时数据 编辑:程序博客网 时间:2024/05/14 04:30

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 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');

 
刷新数据库:

?
FLUSH PRIVILEGES;


1)配置A-C互为主从

修改A配置文件为:

?
server-id   = 1
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   = 3
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 stop;

清空服务器master日志:

?
reset master;


授权同步账号:

?
GRANT REPLICATION SLAVE ON *.* TO 'test'@'%' IDENTIFIED BY 'test'


刷新授权:

?
flush privileges;

 
锁定数据库:

?
flush tables with read lock;

 
将C设置为从:
停止同步:

?
slave stop;

 
配置同步信息:

?
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;

 
将C设置为主:
停止同步:

?
slave stop;


清空服务器master日志:

?
reset master;

 
授权同步账号:

?
GRANT REPLICATION SLAVE ON *.* TO 'test'@'%' IDENTIFIED BY 'test'

 
刷新授权:

?
flush privileges;


锁定数据库:

?
flush tables with read lock;

 
将A设置为从:
停止同步:

?
slave stop;

 
配置同步信息:

?
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;

 
2)将B设置为A的从

?
server-id   = 2
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 stop;

 
配置同步信息:

?
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;

 
启动同步:

?
slave start;

 
3)将D设置为C的从

?
server-id   = 4
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 stop;

 
配置同步信息:

?
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;

 
启动同步:

?
slave start;

 完成之后可以创建添加数据测试一下是否可以。

下面是常见错误处理:

?
1)
change master导致的:
              Last_IO_Error: error connecting to master 'repl1@IP:3306' - retry-time: 60  retries
 
2)   
在没有解锁的情况下停止slave进程:
     mysql> stop slave;
ERROR 1192 (HY000): Can't execute the given command because you have active locked tables or an active transaction
 
3)
change master语法错误,落下逗号
mysql> change master to
    -> master_host='IP'
    -> master_user='USER',
    -> master_password='PASSWD',
    -> master_log_file='mysql-bin.000002',
    -> master_log_pos=106;
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',
master_password='PASSWD',
master_log_file='mysql-bin.000002' at line 3
 
  
4)
在没有停止slave进程的情况下change master
mysql> change master to master_host=‘IP', master_user='USER', master_password='PASSWD', master_log_file='mysql-bin.000001',master_log_pos=106;
ERROR 1198 (HY000): This operation cannot be performed with a running slave; run STOP SLAVE first
 
 
5)
A B的server-id相同:
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids;
these ids must be different for replication to work (or the --replicate-same-server-id option must be used on
slave but this does not always make sense; please check the manual before using it).
查看server-id
mysql> show variables like 'server_id';
手动修改server-id
mysql>set global server_id=2; #此处的数值和my.cnf里设置的一样就行
mysql> slave start;
 
6)change master之后,查看slave的状态,发现slave_IO_running 为NO
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 20号染色体三体怎么办 14号染色体三体怎么办 怀孕七个月不想要了怎么办 胎儿性染色体45x怎么办 16号染色体偏多怎么办 大拇指又短又宽怎么办 削山药皮皮肤痒怎么办 脊柱侧弯20度怎么办 27岁脊柱侧弯怎么办 右侧侧脑室增宽怎么办 左侧脑室增宽该怎么办 腿上的血管堵塞怎么办 做b超看不清骶尾怎么办 孕中期羊水过少怎么办 心脏办膜关闭不全怎么办 9个月胎儿脑积水怎么办 怀孕三个月胎盘低置怎么办 怀孕第一个月打针了怎么办 唐氏筛查神经管缺陷高风险怎么办 门诊处方笺丢了怎么办 孕中期睡觉手麻怎么办 怀孕2个月了没胎心胎芽怎么办 怀孕腿疼的厉害怎么办 孕妇老是失眠多梦怎么办 孕妇会失眠多梦怎么办 怀孕5个月睡不着怎么办 6个月孕妇失眠怎么办 彩超脉络丛囊肿怎么办 双侧脉络丛囊肿怎么办 唐筛神经管缺陷高风险怎么办 雌激素低怎么办吃什么东西补 我怀了狗的孩子怎么办 结婚2年不要孩子怎么办 备孕一直没怀孕怎么办 刚生的婴儿打嗝怎么办 小孩40天黄疸高怎么办 婴儿身高长得慢怎么办 四个月的宝宝哭怎么办 孕39周羊水偏多怎么办 孕39周羊水浑浊怎么办 孕晚期羊水过少怎么办