linux mysql双机热备
linux mysql双机热备与win mysql双机热备略有不同,至少在win下面很快就OK.
本例使用的是mysql5.1.45编译安装
linux下热备修改/etc/my.cnf
具体修改如下(截图)
彩色部分内容为需要配置的地方
其中紫色本身配置文件中已写入,青色部分为后写入。红线为需要注意的地方,与另一台数据库的机器(库)不可以相同。
另一台机器配置与上相似,只需要修改server-id及ip即可。
二、在2个MYSQL上都要创建用于同步的账号
1、
Mysql>GRANT FILE , REPLICATION SLAVE ON *.* TO [email protected]'192.168.8.181' IDENTIFIED BY '123456'
mysql> GRANT ALL PRIVILEGES ON *.* TO [email protected]'192.168.8.181' IDENTIFIED BY '123456'
2.重启2个MYSQL服务
3.在2个MYSQL上都启动同步服务
Mysql>slave start;
4.在2台服务器上查看备份线程状态
Mysql>show slave status;
*如果结果中Slave_IO_Running 和 Slave_SQL_Runing 的值都是Yes,Seconds_Behind_Master的值是0说明配置成功
三、问题与解决
1. 现象:Slave_SQL_Running为No,Seconds_Behind_Master为null
原因:a.程序可能在slave上进行了写操作
b.也可能是slave机器重起后,事务回滚造成的.
解决:
a. 假设在MYSQL_1上出现这种情况
b. 在MYSQL_2上查看主服务器状态:
Mysql>show master status;
+----------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | backup_db | |
+----------------------+----------+--------------+------------------+
c. 在MYSQL_1 上停止同步线程:
Mysql>slave stop;
d. 在MYSQL_1上手动执行同步
Mysql>change master to
>master_host=’192.168.8.181’,
>master_user=’backup’,
>master_password=’123456’,
>master_port=3307,
>master_log_file=’mysql-bin.000001’,
>master_log_pos=106;
e. 启动同步服务
mysql>slave start;
f. 通过show slave status 查看Slave_SQL_Running为Yes, Seconds_Behind_Master为0即为正常。
2. 现象:Slave_IO_Running为No, Seconds_Behind_Master为null
解决:
a. 假设在MYSQL_1上出现这种情况
b. 重启主数据库(MYSQL_2)
c. 在MYSQL_2上查看主服务器状态:
Mysql>show master status;
+----------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | backup_db | |
+----------------------+----------+--------------+------------------+
d. 在MYSQL_1上停止同步服务
Mysql>slave stop;
e. 在MYSQL_1上执行下列命令
Mysql>change master to
>master_log_file=’mysql-bin.000001’,
>master_log_pos=106;
f. 在MYSQL_1上重新启动同步服务
Mysql>slave start;