mysql5.5双机热备配置

首先,假设两个机器已经装好mysql数据库已经装好, ip分别为 A ip:1.1.1.1 B:2.2.2.2

第一步:操作之前需要先把两个库停止操作(增删改),然后把要同步的库里边的数据手工同步一下(直接拷文件或者 mysqldump 自己咋方便咋来),这个过程是必须的,不然你后面怎么弄的都配置不好。还有个问题下面的方法是适用于 mysql5.5的。mysql5.1.5之前的是在 my.cnf 里边配置 master-host的,之后就不支持了,配置之前先看一下自己的mysql 版本 (mysql –version)。

第二步:在两台mysql上创建用户,设置权限
A上添加:
grant replication slave,replication client,reload,super on *.* to ‘sync_user’@’2.2.2.2’ identified by ‘123456’ with grant option;      //用于B访问
B上:
grant replication slave,replication client,reload,super on *.* to ‘sync_user’@’1.1.1.1’ identified by ‘123456’ with grant option;            //用于A访问
执行 flush privileges; 更新数据库使用户生效。(注意:账号加上以后务必从两个机器上互相链接测试一些,确保能链接成功,可能被防火墙之类的的拦截,如果被拦截了的话,自己到网上找教程吧)

第三步:2.在my.cnf里边添加进行相关配置:
A:
server-id = 1
replicate-do-db =mydb    #需要同步的库,多个的话,添加多行
replicate-ignore-db=mysql    #不用同步的库
log-bin=mysql-bin
expire_logs_day=1
max_binlog_size = 500M
slave-skip-errors=all
skip-name-resolve
max_connect_errors=999
slave_net_timeout=60
wait_timeout=30
innodb_file_per_table=on
back_log=200

B:
server-id  = 2
replicate-do-db =mydb    //需要同步的库,多个的话,添加多行
replicate-ignore-db=mysql    #不用同步的库
log-bin=mysql-bin
expire_logs_day=1
max_binlog_size = 500M
slave-skip-errors=all
skip-name-resolve
max_connect_errors=999
slave_net_timeout=60
wait_timeout=30
innodb_file_per_table=on
back_log=200保存后,重启mysql

第四步:在A机器上mysql shell中执行show master status:

mysql> show master status;
+——————+———-+————–+——————+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000017 |      795 |              |                  |
+——————+———-+————–+——————+

记录下这File 和 Position 这两个值,然在B机器上执行  stop slave;然后执行:

CHANGE MASTER TO  MASTER_HOST=’1.1.1.1′, MASTER_PORT=3306, MASTER_USER=’sync_user’, MASTER_PASSWORD=’123456′, MASTER_LOG_FILE=’mysql-bin.000017‘, MASTER_LOG_POS=795;

注意:蓝色部分需要刚才记录的那两个值,然后用户名密码改成你自己设置的内容。

start slave;//开始同步

执行show slave status\G; 如果显示以下信息,表示同步设置成功.
Slave_IO_State: Waiting for master to send event
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

如果不是这样,在mysqldata目录下找 error log 看是什么原因,不明白那log里边的内容区网上搜。

如果以上内容显示正确则表示 主从同步设置成功 成功,如果要设置主主同步还需继续,下面的过程和第四步差不多。

第五步:上一步没有问题。则在B上继续执行show master status;
#show master status;
+——————+———-+————–+——————+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000005 |    6854 |              |                  |
+——————+———-+————–+——————+
1 row in set (0.00 sec)

在A上执行:stop slave;//停止同步
CHANGE MASTER TO  MASTER_HOST=’2.2.2.2′, MASTER_PORT=3306, MASTER_USER=’sync_user’, MASTER_PASSWORD=’123456′, MASTER_LOG_FILE=’mysql-bin.000005′, MASTER_LOG_POS=6854;
#start slave;//开始同步注意事项同上

执行show slave status\G;如显示如下内容,表示同步设置成功。
Slave_IO_State: Waiting for master to send event
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

ok 主主同步设置成功,以上步骤必须顺序执行,同事里边提到的注意事项也需要特别注意,这些都是本人的亲身经历。