两台服务器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文件进行修改。

  1. 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]
...
  1. 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]
...
  1. 重启两台服务器Mysql数据库程序:
    windows系统:net restart mysql
    linux系统:service mysql restart
  2. 查看两台服务器数据库状态码:
show master status\G;

A服务器:

两台服务器做虚拟化一主一备 两台服务器如何做主备_数据库

B服务器:

两台服务器做虚拟化一主一备 两台服务器如何做主备_服务器_02

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