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 backup@'192.168.8.181' IDENTIFIED BY '123456'
mysql> GRANT ALL PRIVILEGES ON *.* TO backup@'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;