Mysql双机热备详细操作手册
程序员文章站
2022-04-09 20:43:11
...
1. 登录MySql
mysql --host=localhost --port=3306 --user=root --password=密码 --database mysql;
2. 创建同步账号
grant replication slave on *.* to 账号@对端mysql2服务器的ip地址 identified by ‘密码’;
- 服务器A:
grant replication slave on *.* to 'replicate'@'120.110.119.111' identified by '123456';
- 服务器B:
grant replication slave on *.* to 'replicate'@'120.110.119.112' identified by '123456';
用户立即生效:
flush privileges;
3. 修改位置文件my.cnf
目录位置:/etc/my.cnf
注:若找不到该文件,请到目录/usr/share/mysql下拷贝my-default.cnf文件,并改名为my.cnf,并放到目录/etc/下
打开my.cnf文件并编辑
服务器A:
新增参数如下:
server-id = 1 服务器A的ID默认为1
log-bin = mysql-bin 日志文件命名为mysql-bin
binlog-do-db = mooc_cloud 需要热备的数据库mooc_cloud
binlog-ignore-db = mysql 不需要同步的数据库
log-slave-updates
sync_binlog = 1
auto_increment_offset = 1
auto_increment_increment = 2
replicate-do-db = mooc_cloud
replicate-ignore-db = mysql,information_schema
服务器B:
新增参数如下:
server-id = 2 服务器B的ID默认为2
log-bin=mysql-bin 日志文件命名为mysql-bin
replicate-do-db = mooc_cloud
replicate-ignore-db = mysql,information_schema,performance_schema
binlog-do-db = mooc_cloud 需要热备的数据库mooc_cloud
binlog-ignore-db = mysql 不需要同步的数据库
log-slave-updates
sync_binlog = 1
auto_increment_offset = 2
auto_increment_increment = 2
重启数据库生效或者使用命令flush privileges;生效
4. 分别查询服务器A、B状态,并记录File和Position参数值备用
服务器A:
mysql> show master status;
mysql-bin.000001 120
服务器B:
mysql> show master status;
5. 分别在A、B服务器上使用命令change master to指定同步的位置
服务器A:
mysql> change master to master_host='120.110.119.B',master_user='replicate',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=5787430;
服务器B:
mysql> change master to master_host='120.110.119.A',master_user='replicate',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=111281;
使用命令生效:
mysql> flush privileges;
6. 分别在A、B服务器上启动服务线程
mysql> start slave;
7. 分别在A、B服务器上查看从服务器的状态
mysql> show slave status;
当Slave_IO_Running和Slave_SQL_Running参数值均为YES时,表示从服务器设置成功
8. 验证数据热备
在服务器A上插入一条数据,然后查看服务器B有没有收到A传过来的数据
相反B服务器操作一致
切换到mooc_cloud库,向app_client表中插入一条数据
mysql> use mooc_cloud
Database changed
mysql> insert into app_client values (2,1,1,'njx');
Query OK, 1 row affected (0.00 sec)
双机热备到此成功完成
9.备注
若部署时遇到下面类似错误,请查看数据库日志,进行报错原因排查并处理。
打开/var/lib/mysql/sjk02.pid,查看报错