一、master:
1、配置:[mysqld]
#主機id 不能和從機id重複
server-id=1
#Master start
#系統錯誤日志
log-error=/opt/mysql_log/master/master_mysql_error.log
#日志輸入位址 主要同步使用
log-bin=/opt/mysql_log/master/master-log-bin.log
#同步資料庫
binlog-do-db=fp
#Master end
2、授權(給slave機子授權):
grant replication slave on *.* to 'slave'@'192.168.105.174' identified by 'slave';
3、sql:
#檢視目前Master的狀态
mysql>show master status\G
二、slave:
1、配置:[mysqld]
#從機id,差別于主機id
server-id=2
#Slave start
#系統錯誤日志
log-error=/opt/mysql/slave/slave_mysql_error.log
#日志位址 主要同步使用
log-bin=/opt/mysql/slave/slave-log-bin.log
#需要同步的資料庫
replicate-do-db=fp
#啟用從庫日志,這樣可以進行鍊式複制
log-slave-updates
#從庫是否隻讀,0表示可讀寫,1表示隻讀
read-only=0
#Slave end
2、設定:
mysql>change master to master_host='192.168.12.120',master_user='slave',master_password='slave',master_Port=3306,master_log_file='master-log-bin.000001',master_log_pos=98;
(可用參數:
slave_io_state: waiting for master to send event
master_host: 192.168.12.120
master_user: slave
master_port: 3306
connect_retry: 60#重試間隔時間60秒
master_log_file: master-log-bin.000001
read_master_log_pos: 107
relay_master_log_file: master-log-bin.000001
replicate_do_db: ms_test
replicate_ignore_db:
replicate_do_table:
replicate_ignore_table:
replicate_wild_do_table:
replicate_wild_ignore_table:
)
3、sql:
#啟動slave
mysql>start slave;
#關閉slave
mysql>stop slave;
#檢視目前程序的狀态
mysql>show processlist\G
#檢視目前slave的狀态
mysql>show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
說明ok
select master_pos_wait('master-log-bin.000001',190283);
4、複制
使用mysqldump來得到一個資料快照可分為以下幾步:
a、鎖表:如果你還沒有鎖表,你應該對表加鎖,防止其它連接配接修改資料庫,否則,你得到的資料可以是不一緻的。如下:
mysql> flush tables with read lock;
b、在另一個連接配接用mysqldump建立一個你想進行複制的資料庫的轉儲(shell> mysqldump --all-databases --lock-all-tables >dbdump.sql)
shell> mysqldump -u root -proot fp --lock-all-tables >d:\aaa.sql
c、對表釋放鎖。
mysql> unlock tables;
5、解決非同步
mysql>stop slave;
mysql>change master to master_host='192.168.12.120',master_user='slave',master_password='slave',master_Port=3306,master_log_file='master-log-bin.000001',master_log_pos=98;
mysql>start slave;