您好,登錄后才能下訂單哦!
一,配置主數據庫
1, 修改my.cnf或者my.ini
? ? ? ? ? ? ? ? ?[mysqld]
? ? ? ? ? ? ? ? ?log-bin=mysql-bin
? ? ? ? ? ? ? ? ?server-id=1
??? 修改完成,重啟服務器
2, 注意:
1) 如果未設置server_id或者設置為0,那么主數據庫將會拒絕所有從數據庫的連接
2) 如果使用的是innodb存儲引擎,為了獲得更好的持久性與一致性,需要在my.cnf中配置如下選項:
? ? ? ? ? ?innodb_flush_log_at_trx_commit=1
? ? ? ? ? ?sync_binlog=1
3) 確保?主數據庫skip_networking
系統變量為不可用,否則,從服務器將無法連接主服務器,導致復制失敗
3, 創建用于復制的用戶
? ? ? ? ? ? ? ? ? 新建一個用戶repl,賦予復制權限,專門用于主從復制。
? ? ? ? ? ? ? ? ??mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password';
? ? ? ? ? ? ? ? ? mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';
4, 獲取復制主二進制日志坐標
? ? ? ? ? ? ? 1),在主庫上新建會話,鎖定表的寫操作
? ? ? ? ? ? ? ? ? ? ? ?mysql> FLUSH TABLES WITH READ LOCK;
? ? ? ? ? ? ? ? ? ? ? ?警告:發出鎖操作的客戶機要保持連接,否則會釋放鎖。
? ? ? ? ? ? ?2),在主數據庫上新建會話,查詢二進制日志文件的名字和位置:
? ? ? ? ? ? ? ? ? ? ??mysql > SHOW MASTER STATUS;
? ? ? ? ? ? ? ? ? ? ? 記下file一欄的名字和position一欄的位置,稍后配置從庫會用到,如果主數據庫沒有在啟用二進制日志文件的情況下運行,則查詢結果可能為空,那么在稍后的從庫配置中,名字為‘’空字符串,位置為4
5, 如果主庫已經存在數據
? ? ? 那么,不要斷開鎖表會話,然后進行下一步
? ? ? 1),新建一個主庫的快照
? ? ? ? ? ? ? ? ? ? ? ? ?mysqldump--all-databases --master-data > dbdump.db
? ? ? ? ? ? ? ? ? ? ? ? ?如果想忽略某幾個庫:
? ? ? ? ? ? ? ? ? ? ? ? ?mysqldump --all-databases –ignore-database=db1 –ignore-database=db2 –ignore-database=db3 --master-data > dbdump.db
? ? ? ? ? ? ? ? ? ? ? ? ?如果只想快照某個數據庫db1:
? ? ? ? ? ? ? ? ? ? ? ? ?mysqldump –databases database1 --master-data > dbdump.db
? ? ? ? ? ? ? ? ? ? ? ? ?或者快照某幾個數據庫db1,db2,db3:
? ? ? ? ? ? ? ? ? ? ? ? ??mysqldump –databases db1 db2 db3 --master-data > dbdump.db
? ? ? ? ? ? ? ? 2),導入快照數據
? ? ? ? ? ? ? ? ? ? ? ? ?mysql < dbdump.db???
? ? ? ? ? ? ? ? ? ? ? ? ?可以復制快照文件到從服務器,或者遠程訪問該快照文件
二,設置復制從數據庫,
1, 在主庫上釋放鎖:
? ? ? ? ? ? ? ???mysql> UNLOCK TABLES;
2, 編輯從庫my.cnf,設置server-id,該id必須是唯一的,不可與主庫或者任何從庫沖突。
? ? ? ? ? ? ? ? ?[mysqld]
? ? ? ? ? ? ? ? ?server-id=2
? ? ? ? ? ? ? ? ?設置完成,重啟服務器
3, 注意:
? ? ? ? ? ? ? ? 1)如果將server-id 設置為0,則從庫為拒絕連接主庫
? ? ? ? ? ? ? ? 2)如果從庫只是作為從庫使用,就不必開啟二進制日志,如果從庫繼續作為二級主庫,則需要開啟二進制日志
? ? ? ? ? ? ? ? 3)復制不能使用Unix套接字文件。您必須能夠使用TCP/IP連接到主MySQL服務器
4, 如果從庫沒有快照要導入:
1) 啟動從庫并連接
2) 運行從庫設置語句
? ? ? ? ? ? ? ? ??CHANGE MASTER TO
? ? ? ? ? ? ? ? ? MASTER_HOST='master_host_name',
? ? ? ? ? ? ? ? ? MASTER_USER='replication_user_name',
? ? ? ? ? ? ? ? ? MASTER_PASSWORD='replication_password',
? ? ? ? ? ? ? ? ? MASTER_LOG_FILE='recorded_log_file_name',
? ? ? ? ? ? ? ? ? MASTER_LOG_POS=recorded_log_position;
3) 啟動從庫
? ? ?Start slave;
5, 如果從庫需要導入快照數據:
1) 使用如下命令啟動從庫
? ? ? ? ? ? ? ? ??mysqld ?--skip-slave-start
?&
2) 導入快照:
? ? ? ? ? ? ? ? ? ? ??mysql < dbdump.db??????
3) 運行從庫設置語句:
? ? ? ? ? ? ? ? ? ? ? CHANGE MASTER TO
? ? ? ? ? ? ? ? ? ? ? MASTER_HOST='master_host_name',
? ? ? ? ? ? ? ? ? ? ? MASTER_USER='replication_user_name',
? ? ? ? ? ? ? ? ? ? ? MASTER_PASSWORD='replication_password',
? ? ? ? ? ? ? ? ? ? ? MASTER_LOG_FILE='recorded_log_file_name',
? ? ? ? ? ? ? ? ? ? ? MASTER_LOG_POS=recorded_log_position;
4) 啟動從庫
? ? ? ? ? ? ? ? ? ? ? start slave
? ? ? 從屬服務器在其主信息存儲庫中存儲有關已配置的主服務器的信息。主信息存儲庫可以是文件或表的形式,這取決于從庫的系統變量?master_info_repository
?設置
? ? ? 如果master_info_repository=FILE
,那么,以文件master.info
?和?relay-log.info
的形式存在于data目錄
? ? ? 如果master_info_repository=TABLE
?,那么,信息存在?master_slave_info
表中。
? ? ? 主信息存儲庫的內容會覆蓋命令行或my.cnf中指定的一些服務器選項。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。