MYSQL主从复制或双机互备

来源:互联网 发布:今日头条推荐算法 编辑:程序博客网 时间:2024/05/16 08:21

http://www.net527.cn/shujukuguanli/Mysql/2010/0323/8336.html

主从复制配置:

编辑主服务器的配置文件:my.cnf
server-id = 1
log-bin
binlog-do-db=需要备份的数据库名,如需设置多个数据库,重复设置这个选项即可
binlog-ignore-db=不需要备份的数据库名,如需设置多个数据库,重复设置这个选项即可。

编辑从服务器的配置文件:my.cnf
server-id=2(配置多个从服务器时依次设置id号)
master-host=主机
master-user=用户名
master-password=密码
master-port=端口
replicate-do-db=需要备份的数据库名,如需设置多个数据库,重复设置这个选项即可

启动MYSQL并进行配置

1) 在主服务器上为从服务器建立一个用户(建立复制帐号权限):grant replication slave on *.* to‘用户名‘@’主机’identified by‘密码’;(在MySQL 4 dot 0.2以前,用FILE权限来代替REPLICATION SLAVE)

*如果打算在slave上执行LOAD TABLE FROM MASTER或LOAD DATA FROM MASTER语句,那么必须给该帐户授予附加权限:授予全局SUPER和RELOAD权限。授予对想要加载的所有表上的SELECT权限。在master 上任何没有SELECT权限的表都会被LOAD DATA FROM MASTER略过。

2) 将数据从主服务器中导出并导入从服务器

Mysql> flush tables with read lock; #锁定主服务器上的表为只读状态
Mysql> show master status; #查看主节点的状态

[root@server02]# mysqldump -uroot -p --skip-opt --single-transaction --add-drop-table --create-options --quick --extended-insert --set-charset --disable-keys CPMS > cpms.sql #创建一个完整的备份

3)
[root@server02]# scp cpms.sqlroot@172.20.86.27:/tmp# 把数据传输到从节点上
[root@server02]# mysql CPMS < /tmp/cpms.sql #把数据导入到从节点

Mysql>change master to master_host = '主服务器IP', master_user = '刚才建立用来复制的用户名', master_password = '复制用户名的密码', master_log_file = 'mysql-bin.000004', master_log_pos =98; #设置从节点连接主节点(master_log_file和master_log_pos这个需要在主服务器中通过show master status;查看得来)

Mysql>slave start; #启动复制

4) show slave status/G查看复制状态

 


查看状态 及调试

1,查看master的状态

SHOW MASTER STATUS;

Position不应为0

2,查看slave的状态

show slave status;

Slave_IO_Running | Slave_SQL_Running这两个字段 应为YES|YES.

show processlist;

会有两条记录与同步有关state为Has read all relay log; waiting for the slave I/O thread to update it

和s Waiting for master to send event .

3,错误日志

MySQL安装目录/data/Hostname.err

 

4,CHANGE MASTER TO

如果A的Slave未启动,Slave_IO_Running为No.

可能会是B的master的信息有变化,

查看B SHOW MASTER STATUS;

记录下File,Position字段.假设为'mysql_binary_log.000004',98 ;

在A下执行:

Stop Slave;

CHANGE MASTER TO

MASTER_LOG_FILE = 'mysql_binary_log.000004',

MASTER_LOG_POS = 98 ;

Start Slave;

 

5,SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n;

如果A的Slave_SQL_Running为No.

Err文件中记录:

Slave: Error 'Duplicate entry '1' for key 1' on query....

可能是master未向slave同步成功,但slave中已经有了记录。造成的冲突.

可以在A上执行

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n;

跳过几步。再

restart salve;

6,如果从服务器同步失败show slave status/G出现如下报错:
Last_IO_Error: error connecting to master '用户名@主服务器:3306' - retry-time: 1 retries: 86400
可在MySQL中执行如下命令:
STOP SLAVE;
RESET MASTER;
RESET SLAVE;

SLAVE START;

(责任编辑:admin)