天天看點

mysql 主從伺服器搭建

一、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;