1. 程式人生 > >mysql主從資料庫配置(主伺服器某庫,從伺服器某些表)

mysql主從資料庫配置(主伺服器某庫,從伺服器某些表)

一、主庫配置
1.修改my.cnf檔案 vi /ect/my.cnf (一般linux下在這裡)
在my.cnf 檔案中加入
log_bin=/usr/local/mysql/binlog/mysql-bin #後面接的是日誌存放路徑(目錄必須存在,不存在手動建立 許可權777)
#過濾庫
binlog_ignore_db=mysql
binlog_ignore_db=infomation_schema
binlog_ignore_db=performance_schema
(三句的意思:備份時忽略 mysql…那3個預設的庫)
#指定同步的庫
binlog-do-db=mydata
重啟mysql(service mysqld restart)

2.在msqyl下執行(mysql -uroot -p)
新增複製使用者:
GRANT REPLICATION SLAVE ON *.* to ‘user’@ ‘%’ identified by ‘password’;
flush privileges; 更新操作

二、從庫配置
1.修改my.cnf檔案 vi /ect/my.cnf (一般linux下在這裡)
在my.cnf 檔案中加入
server_id=2
#指定更新表
replicate-wild-do-table=mydata.db_user
重啟mysql(service mysqld restart)

2.在msqyl下執行(mysql -uroot -p)
從庫與主庫連線 change master to
master_host=’192.168.1.199’,master_user=’root’,master_password=’root’,master_log_file=’mysql-bin.000001’,master_log_pos=154;
#啟動主從服務
start slave;
#檢視從伺服器是否啟動成功
show slave status;
如:
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
均為Yes表示成功

reset slave ; 重置slave狀態.
stop slave; 暫停slave狀態;

三、額外篇
1.進入mysql執行(檢視和重置日誌)
show master logs; 這個檢視你的binlog檔案當前到了那個點
如果不是從0001開始的,重置一下日誌 語句: reset master;

2.linux下執行(匯出日誌檔案成sql格式)
cd進入mysql-bin.000002日誌的資料夾
mysqlbinlog mysql-bin.000002 > /tmp/back.sql 可以通過這個語句將日誌匯出sql檔案 (mysqlbinlog執行失敗的話可能是路徑問題 如:/usr/local/mysql/bin/mysqlbinlog)
匯出mysql檔案報錯:(mysqlbinlog mysql-bin.000063 > back.sql)
/usr/local/mysql/bin/mysqlbinlog: unknown variable ‘default-character-set=utf8’
解決:
mysqlbinlog –no-defaults mysql-bin.000063 > back.sql