数据库需要双活,所以将两台服务器安装MySQL后,做主主复制同步,再配合Keepalived即可实现双活。

服务器信息

服务器1 IP:10.0.0.95

服务器2 IP:10.0.0.96

MySQL:5.5

修改配置文件(/etc/my.cnf)

在[mysqld]节点增加以下内容

# 开始配置主主
server-id=1

# 二进制日志,mysql-bin.000001 ...
log-bin=mysql-bin

# 记录二进制日志的数据库
binlog-do-db=test

# 同步的数据库
replicate-do-db=test

# 从服务器更新也写入二进制日志,作为从服务器,又作为主服务器时需要
log-slave-updates

# 每次事务提交后都写入二进制日志,默认0由系统或缓存决定何时写入文件
sync_binlog=1

服务器1和服务器2都在配置文件添加以上内容,只是server-id的值在服务器1中设为1,在服务器2中设为2。

配置设定好以后,启动MySQL服务。

执行MySQL命令

以root分别登录服务器1和服务器2。

创建同步用户

服务器1

mysql> grant replication slave,file on *.* to 'replication'@'10.0.0.96' identified by '123456';
mysql> flush privileges;

服务器2

mysql> grant replication slave,file on *.* to 'replication'@'10.0.0.95' identified by '123456';
mysql> flush privileges;

启动从服务

-- 全局只读,所有库所有表都只读。【两个服务器都执行这个命令】
mysql> flush tables with read lock;

-- 显示主服务状态。【两个服务器都执行这个命令】
mysql> show master status\G

*************************** 1. row ***************************
File: mysql-bin.000004
Position: 344
Binlog_Do_DB: test
Binlog_Ignore_DB: 
1 row in set (0.00 sec)

-- 两台服务器获得bin log的信息后,就可以放开只读锁定。【两个服务器都执行这个命令】
mysql> unlock tables;

-- 从服务器设置主服务器信息。【服务器1设定的master_host, master_log_file, master_log_pos是服务器2的信息,服务器2设定的是服务器1的信息】
mysql> stop slave;
mysql> change master to master_host='10.0.0.95',master_user='replication',master_password='123456',master_log_file='mysql-bin.000004', master_log_pos=344;
mysql> start slave;

-- 查看服务器状态,检查Slave_IO_Running和Slave_SQL_Running是否都为Yes。
mysql> show slave status\G;

完成设置,可以测试两边是否可以同步。注意主键不要重复,可以使用类似UUID的方式生成主键。