項目需要,自己找了些資料和親手配置過後;得出的經驗分享。
(1)主服務器
修改配置文件/etc/my.cnf(my.ini)
[mysqld]
# mysql-bin是log文件的前綴,也可以使用其它的名字,比如服務器名
# 如果不帶路徑,會把log文件寫到`/var/lib/mysql`下
log-bin=mysql-bin
# serverid在一個同步體系中必須是唯一的,大於等於1且小於2^32-1的整數
server-id=1
binlog-do-db = 數據庫名 (你要備份的數據庫)
binlog-ignore-db = 數據庫名 (你不需要備份的數據庫)
#以上兩個都不選,備份全部
#如果使用InnoDb,為了保證穩定,還應設置如下兩行:
innodb_flush_log_at_trx_commit=1
sync_binlog=1
#並且確保沒有設置skip-networking,禁用網絡自然無法同步。但是,
#innodb_flush_log_at_trx_commit=1在某些服務器上會導致寫數據速度急劇下降,
#可嘗試調整為2。
#自己手動添加,並重啟mysql服務器
[可選操作添加賬戶]
#設置賬戶步驟:
#登錄mysql主服務器,
[root@localhost ~]# mysql -uroot –p123456 登錄mysql
#這裡需要指明一下啊 這個123456是我的mysql的密碼
#添加一個叫做beifen的用戶,並授權給從服務器
mysql> grant replication slave on *.* to 'beifen'@'192.168.1.2' identified by '123';
#創建 beifen用戶,密碼設置為123 並授權給192.168.1.2(ip為從機ip)使用。
mysql->SHOW MASTER STATUS; #查看信息並記下File和Position的值,
#這個在配置從數據庫的時候用的到
(2)從服務器my.cnf設置(如果需要雙向主,除server-id不一樣之外,其他配置和主服務器一樣)
server-id是必須設置的,binlog不用開。
修改配置文件/etc/my.cnf(my.ini)
將service-id=1修改為server-id=2
並重啟mysql服務器並登錄
[如果有數據先處理數據]
(有人說在導入數據的時候執行 mysql > stop slave; 具體沒測試)
處理數據方法:
FLUSH TABLES WITH READ LOCK; 1鎖住主服務器
2 從主服務器中導出數據,
3 導入從服務器
UNLOCK TABLES; 4解鎖
#設置主從關系(也可以在服務器使用,表示雙向)
mysql->change master to master_host='192.168.1.1', (主服務器IP)
master_user='beifen',master_password='123',
master_log_file='mysql-bin.000001',(主服務器查詢出file值)
master_log_pos=107;(主服務器查詢出Position值)
啟動slave同步
mysql > start slave;
#檢查主從同步,如果您看到Slave_IO_Running和Slave_SQL_Running均為Yes,
#則主從復制連接正常。
mysql > show slave status\G