mysql的AB复制

mysql的AB复制是实时同步的,不需要停服务,不需要锁表。

分两种情况

一.一台刚刚安装好的mysql

主库:

#vi /etc/my.cnf

log-bin=mysql

server-id=134

#service mysqld restart

#mysql -uroot -p******;

mysql>show master status   查看position (便于后面备份)

mysql>grant replication slave on *.* to slave@192.168.0.180  identified by '******' 为slave用户授权。

从库:

#vi  /etc/my.cnf

server-id=180

#service mysqld restart

#mysql -uroot -p******

mysql>change master to

mysql>master_host = '192.168.0.134',

mysql>master_user ='slave',

mysql>master_password='******',

mysql>master_log_file ='mysql.000001',

mysql>master_log_pos =106;

mysql>slave start;  启动同步。

mysql>show slave status\G;  查看是否同步。

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

若出现以上两个Yes则同步成功。 

 

二 一台已经运行了一段时间的mysql服务器

主库:

mysql>show master status; 查看position便于后续同步

#mysqldump --all-databases --lock-all-tables --flush-logs --master-data -uroot -p******>/tmp/all.sql

#scp  /tmp/all.sql  192.168.0.180:/tmp

#vi /etc/my.cnf

log-bin=mysql

server-id=134

#service mysqld restart

从库

#mysql -uroot -p******</tmp/all.sql

#vi  /etc/my.cnf

server-id=180

#service mysqld restart

 

mysql>change master to

mysql>master_host = '192.168.0.134',

mysql>master_user ='slave',

mysql>master_password='******',

mysql>master_log_file ='mysql.000001',

mysql>master_log_pos =106;

mysql>slave start;  启动同步。

mysql>show slave status;

 

(注意)

1 如果出问题可能是防火墙,日志问题。

2.如果change master to 敲错的情况下 先slave stop 再change master to。

3.change master to的优先级高于master.info 。#cat master.info(缓存文件)