mysql復制(主從分離)

1、下載一個穩定的mysql版本
2、在主庫上,設置一個復制使用的賬戶,并授權replication slave權限。這里創建一個復制用戶rep1,可以從ip為192.168.5.10的主機進行鏈接。

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.5.10' IDENTIFIED BY '123456';
Query OK, 0 rows affected, 1 warning (0.02 sec)

3、修改主數據庫服務器的配置文件my.cnf,開啟binlog,并設置server-id的值。
配置如下:

[mysqld]
log-bin = /Users/sam/test/log/mysql-bin.log
server_id = 1

4、在主庫上,設置讀鎖定有效,這個操作是為了確保沒有數據庫操作,以便獲得一個一致性快照:

mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)  

5、得到主庫上當前的二進制志名和偏移量值。這個操作是為了在從數據庫啟動以后,從這個點開始進行數據的恢復。

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

6、現在主數據庫已經停止了更新操作,我們備份一下數據庫,最快的方式就是直接復制數據文件,備份相信大家都會吧,在這里我們就不多做說明了。
7、數據備份完畢之后,可以恢復寫的操作,然后剩下的只要在從數據庫上做就行好了。

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

8、將備份的數據恢復到從數據庫上。
9、修改從數據庫的my.cnf文件,增加server-id,(server-id是唯一的,從庫的不能和主庫一樣。如果有多個從數據庫,每個server-id都必須唯一)。
在my.cnf配置:

[mysqld]
server_id = 2

10、在從庫上,使用--skip-slave-start選項啟動從數據庫,這樣不會立即啟動從數據庫服務上的復制進程,方便我們對數據庫上的服務進行 進一步的配置

192:bin Ast$ sudo ./mysqld_safe --skip-slave-start &

11、對從數據庫服務器做相應的設置,制定復制使用的用戶,主數據庫服務器的ip,端口以及開始執行復制的日志文件和位置(第5步中的FILE和Position),具體代碼:

mysql> CHANGE MASTER TO
MASTER_HOST='192.168.5.7',
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
Query OK, 0 rows affected, 2 warnings (1.64 sec)

12 、從庫上啟動slave線程:

mysql> start slave;
Query OK, 0 rows affected (0.17 sec)

13、slave上執行 show processlist命令顯示類似如下的進程:

mysql> show processlist;
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
| Id | User        | Host      | db   | Command | Time | State                                                  | Info             |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
|  9 | root        | localhost | NULL | Query   |    0 | starting                                               | show processlist |
| 88 | system user |           | NULL | Connect |   12 | Connecting to master                                   | NULL             |
| 89 | system user |           | NULL | Connect |   12 | Slave has read all relay log; waiting for more updates | NULL             |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
3 rows in set (0.04 sec)

這表明已經連接上master來,開始接受并執行日志。

在slave上檢查下同步的執行狀態:
show slave status\G
看其中的Slave_IO_Running和Slave_SQL_Running的狀態是否yes,不是的話則出錯了。

mysql> show slave status\G
*************************** 1. row ***************************
              Slave_IO_State: Waiting for master to send event
                 Master_Host: 192.168.5.7
                 Master_User: repl
                 Master_Port: 3306
               Connect_Retry: 60
             Master_Log_File: mysql-bin.000001
         Read_Master_Log_Pos: 768
              Relay_Log_File: 192-relay-bin.000002
               Relay_Log_Pos: 934
       Relay_Master_Log_File: mysql-bin.000001
            Slave_IO_Running: Yes
           Slave_SQL_Running: Yes
             ***
1 row in set (0.00 sec)

到此為止,所有的復制工作我們都已做完了。

在主數據創建數據庫表并插入數據查看是否同步。




如果因為某種操作或服務器蕩機導致復制失敗Slave_SQL_Running: No
解決 Slave_SQL_Running: No
從數據庫關閉slave線程:

mysql> stop slave;

再次查看主數據庫上File和Position值

mysql> show master status;

記錄下File和Position值,從數據庫上設置

CHANGE MASTER TO
MASTER_HOST='xxxxxxx',
MASTER_USER='xxxxxxx',
MASTER_PASSWORD='xxxxxxx',
MASTER_LOG_FILE='xxxxxxx',
MASTER_LOG_POS=xxxxxxxx;
mysql> start slave;
Query OK, 0 rows affected (0.17 sec)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,001評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,786評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,986評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,204評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,964評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,354評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,410評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,554評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,106評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,918評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,093評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,648評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,342評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,755評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,009評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,839評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,107評論 2 375

推薦閱讀更多精彩內容