Home >Database >Mysql Tutorial >mysql数据库互为主从配置_MySQL

mysql数据库互为主从配置_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-01 13:49:331222browse

bitsCN.com

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   = 1replicate-do-db=testreplicate-do-db=test_adminlog-bin=mysql-binlog-slave-updatesreplicate-wild-do-table=test.%replicate-wild-do-table=test_admin.%binlog-ignore-db=mysqlslave-skip-errors=all


修改C配置文件为:

server-id   = 3binlog-do-db=testbinlog-do-db=test_adminlog-bin=mysql-binlog-slave-updatesreplicate-wild-do-table=test.%replicate-wild-do-table=test_admin.%binlog-ignore-db=mysqlslave-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   = 2replicate-do-db=testreplicate-do-db=test_adminlog-bin=mysql-binlog-slave-updatesreplicate-wild-do-table=test.%replicate-wild-do-table=test_admin.%binlog-ignore-db=mysqlslave-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   = 4replicate-do-db=testreplicate-do-db=test_adminlog-bin=mysql-binlog-slave-updatesreplicate-wild-do-table=test.%replicate-wild-do-table=test_admin.%binlog-ignore-db=mysqlslave-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  retries2)    在没有解锁的情况下停止slave进程:     mysql> stop slave;ERROR 1192 (HY000): Can't execute the given command because you have active locked tables or an active transaction3)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 mastermysql> 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 first5)A B的server-id相同:Last_IO_Error: Fatal error: The slave I/O thread stophotoshop/ target=_blank class=infotextkey>ps 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 onslave but this does not always make sense; please check the manual before using it).查看server-idmysql> show variables like 'server_id';手动修改server-idmysql> set global server_id=2; #此处的数值和my.cnf里设置的一样就行mysql> slave start;6)change master之后,查看slave的状态,发现slave_IO_running 为NO

 

bitsCN.com
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn