两台服务器Mysql主-主热备部署
一般情况下,两台服务器Mysql数据库信息应该保持一致,这就需要保证修改任意一台服务数据库信息,俩边的信息都需要变动,因此下边为数据库主主热备(即两台服务器数据库都做主机看待)
举例说明(A服务器:192.168.200.101,用户名:test1,密码:123456
B服务器:192.168.200.102,用户名:test2,密码:123456)
1.保证两台数据库能够互相访问
在内网中保证两台服务器分别能访问对方的数据库信息:
A服务器上设置B数据库权限:
grant replication slave on *.* to 'test1'@'192.168.200.102' identified by '123456';
flush privileges;
B服务器上设置A数据库权限
grant replication slave on *.* to 'test2'@'192.168.200.101' identified by '123456';
flush privileges;
分别在A服务器上访问B数据库,在B服务器上访问A数据库,当两者都能互相访问对方数据库时,数据库访问就成功了。
2.配置两台服务器的my.ini文件
由于我的服务器是windows服务器,找到mysql安装路径下的my.ini配置文件进行修改,linux服务器找到my.cnf文件进行修改。
- A服务器文件配置修改:
[mysqld]
...
server-id=1
log-bin=mysql-bin
replicate-do-db=test_dev #需要同步到B的数据库名称
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
binlog-do-db=test_dev #需要让B同步的数据库名称
binlog-ignore-db=informaiton_schema
binlog-ignore-db=mysql
log-slave-updates=on #从库进行日志同步
auto_increment_offset=1
auto_increment_increment=2
[client]
...
- B服务器文件配置修改:
[mysqld]
...
server-id=2
log-bin=mysql-bin
replicate-do-db=test_dev #需要同步到A的数据库名称
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
binlog-do-db=test_dev #需要让A同步的数据库名称
binlog-ignore-db=informaiton_schema
binlog-ignore-db=mysql
log-slave-updates=0 #从库进行日志同步
auto_increment_offset=1
auto_increment_increment=2
[client]
...
- 重启两台服务器Mysql数据库程序:
windows系统:net restart mysql
linux系统:service mysql restart - 查看两台服务器数据库状态码:
show master status\G;
A服务器:
B服务器:
3.修改两个服务器数据库同步状态
A服务器:
change master to master_host='192.168.200.102',master_user='test2',master_password='123456',master_log_file='mysql-bin.000016',master_log_pos=515;
B服务器:
change master to master_host='192.168.200.101',master_user='test1',master_password='123456',master_log_file='mysql-bin.000011',master_log_pos=497;
(注意:其中master_log_file指向服务器状态码的File,msater_log_pos指向服务器状态码的Position,当一台服务器重启或者数据库服务重启之后其状态码会改变,需要在另一台服务器上重新同步这台服务器的同步状态)
修改完之后,需要重新启动从线程:
start slave;
到这表示两台服务器对应主-主热备搭建完成。
4.查看搭建是否成功
在每台服务器数据库上查看状态信息:
show slave status\G;
当下面两个状态为Yes表示设置成功:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes