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