分享一下MySQL主从、主备配置~
1、分别在主、备、从上正常安装MySQL
2、设置主服务器:
添加一个同步用户,赋予他 slave,replication权限并限制仅允许192.168.11.%段可访问,用户密码为:xxxx
grant replication slave,replication client on *.* to repl@‘192.168.11.%’ identified by ‘xxxxx’;
3、设置备份服务器:
对于主服务器来说,备份服务器也是一个从服务器,因此按照从服务器的配置即可
修改my.cnf
添加内容:
log_slave_updates = 1
read_only = 1
重启数据库
执行设置主服务器的操作:主服务器IP为192.168.11.9,用户为主服务器上设置的用户,同时设置主服务器的binlog及同步的起点,由于我们的测试是新建的服务器,因此设置为0即可,最后显示设置后的slave服务器的状态
CHANGE MASTER TO MASTER_HOST=’192.168.11.9′, MASTER_USER=’repl’, MASTER_PASSWORD=’xxxxx’, MASTER_LOG_FILE=’mysql-bin.000001′,MASTER_LOG_POS=0;SHOW SLAVE STATUS\G
启动从服务器开始同步数据:
START SLAVE ;
查看同步状态:
SHOW SLAVE STATUS\G
可能会出现的状态:
Slave_IO_Running: Yes
Slave_SQL_Running: No
即同步停止:
状态信息后有如下的信息:
Last_Errno: 1062
Last_Error: Error ‘Duplicate entry ‘%-test-‘ for key ‘PRIMARY” on query. Default database: ‘mysql’. Query: ‘INSERT INTO db SELECT * FROM tmp_db WHERE @had_db_table=0;’
……
Last_SQL_Errno: 1062
Last_SQL_Error: Error ‘Duplicate entry ‘%-test-‘ for key ‘PRIMARY” on query. Default database: ‘mysql’. Query: ‘INSERT INTO db SELECT * FROM tmp_db WHERE @had_db_table=0;’
这里出错时因为自动同步了mysql库,而mysql服务器安装的时候会增加一些默认配置,这些数据出现了冲突,跳过并重新开始同步即可:
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
上述操作可能需要多次执行。
ERROR 1198 (HY000): This operation cannot be performed as you have a running slave ”; run STOP SLAVE ” first
此提示表明上面的跳过同步的操作已经完成,无需再次执行。
其他从服务器重复以上操作,
一般我们的服务器的网络结构如下:
如果从服务器较多,我们也可以将服务器的结构设置成:
当然,我们还可以通过一些数据库中间件来模拟多主架构如:MMM
--转自