1. 程式人生 > >MySQL主從介紹,配置主伺服器,配置從伺服器,實現主從同步

MySQL主從介紹,配置主伺服器,配置從伺服器,實現主從同步

MySQL主從配置

17.1 MySQL主從介紹

MySQL主從又叫做Replication、AB複製。簡單講就是A和B兩臺機器做主從後,在A上寫資料,另外一臺B也會跟著寫資料,兩者資料實時同步。
MySQL主從是基於binlog的,主上須開啟binlog才能進行主從。

主從過程

  1. 主將更改操作記錄到binlog中
  2. 從將主的binlog事件(SQL語句)同步到本機並記錄在relaylog中
  3. 從根據relaylog裡面的SQL語句按順序執行

說明: 該過程有三個執行緒,主上有一個log dump執行緒,用來和從的i/o執行緒傳遞binlog;從上有兩個執行緒,其中i/o執行緒用來同步主的binlog並生成relaylog,另外一個SQL執行緒用來把relaylog裡面的SQL語句落地。

工作原理



應用環境

  1. 備份重要資料
  2. 分擔主庫資料讀取壓力

準備工作

安裝並啟動MySQL服務。

 配置主伺服器

編輯配置檔案新增如下引數:

[[email protected] ~]# vim /etc/my.cnf
……
server-id=132
#自定義
log_bin=linux1
#指定log字首

編輯完成後重啟mysql服務:

[[email protected] ~]# /etc/init.d/mysqld restart
Shutting down MySQL...... SUCCESS! 
Starting MySQL.................. SUCCESS! 

檢視mysql庫檔案:

[[email protected] ~]# ls -lt /data/mysql/
……
-rw-rw----  1 mysql mysql       20 830 15:52 linux1.index
-rw-rw----  1 mysql mysql      120 830 15:52 linux1.000001
……

說明: 重啟後生成兩個字首為adailinux1的二進位制檔案。

新建一個數據庫為試驗做準備:

[[email protected] ~]# cd /data/mysql/

備份一個數據庫:
[[email protected] mysql]# mysqldump -uroot -p123456 zrlog > /tmp/zrlog.sql
新建一個數據庫: [[email protected] mysql]# mysql -uroot -p123456 -e "create database test" 將備份的資料恢復到新建的資料庫中: [[email protected] mysql]# mysql -uroot -p123456 test < /tmp/zrlog.sql

建立一個用於同步資料的使用者:

[[email protected] mysql]# mysql -uroot -p123456
Welcome to the MySQL monitor.
mysql> grant replication slave on *.* to 'repl'@'192.168.8.130' identified by '123456';
Query OK, 0 rows affected (0.01 sec)
#IP為“從”的IP

mysql> flush tables with read lock;
Query OK, 0 rows affected (0.12 sec)
#鎖定資料表(目的是暫時使其不能繼續寫,保持現有狀態用於同步)

mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
|     linux1.000001 |    10844 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
#記住file和position(設定主從同步時會使用)
mysql> quit
Bye

備份主庫中所有資料庫:

[[email protected] mysql]# mysqldump -uroot -p123456 linux > /tmp/linux.sql
[[email protected] mysql]# mysqldump -uroot -p123456 linux2 > /tmp/linux2.sql

配置從伺服器

編輯配置檔案:

[[email protected] ~]# vim /etc/my.cnf
……
server-id=130
……

[[email protected] ~]# /etc/init.d/mysqld restart
Shutting down MySQL...... SUCCESS! 
Starting MySQL.............................. SUCCESS! 

說明: 從的server-id要和主的server-id不同。

配置完成後將主中備份的資料傳送到從中:

[[email protected] ~]# scp 192.168.8.132:/tmp/*.sql /tmp/
The authenticity of host '192.168.8.132 (192.168.8.132)' can't be established.
ECDSA key fingerprint is 78:22:19:9e:d5:4a:9d:cb:71:54:d7:c0:9a:13:18:9c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.8.132' (ECDSA) to the list of known hosts.
[email protected]'s password: 
alinux2.sql                                             100% 1259     1.2KB/s   00:00    
linux.sql                                              100% 1258     1.2KB/s   00:00    
zrlog.sql                                             100% 9864     9.6KB/s   00:00   

建立庫:

[[email protected] ~]# mysql -uroot
Welcome to the MySQL monitor. 
mysql> create database linux;
Query OK, 1 row affected (0.03 sec)

mysql> create database linux2;
Query OK, 1 row affected (0.00 sec)

mysql> create database zrlog;
Query OK, 1 row affected (0.00 sec)
mysql> quit
Bye

恢復資料庫:

[[email protected] ~]# mysql -uroot linux < /tmp/linux.sql 
[[email protected] ~]# mysql -uroot linux2 < /tmp/linux2.sql 
[[email protected] ~]# mysql -uroot zrlog < /tmp/zrlog.sql 

注意: 該過程要保證主從資料庫內容的一致。

實現主從同步

[[email protected] ~]# mysql -uroot
Welcome to the MySQL monitor. 
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.06 sec)
mysql> change master to master_host='192.168.8.132',master_user='repl',master_password='123456',master_log_file='linux1.000001',master_log_pos=10844;
Query OK, 0 rows affected, 2 warnings (0.46 sec)
#IP為主的IP;file、pos分別為主的filename和position。

檢測主從是否建立成功:
mysql> start slave;
Query OK, 0 rows affected (0.22 sec)

mysql> show slave status\G
 Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

以上操作完成後,解鎖主庫的表(在主上操作):

[[email protected] mysql]# mysql -uroot -p123456
Welcome to the MySQL monitor.
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

至此主從配置搭建完成!!!

測試主從

引數介紹

主伺服器:
binlog-do-db=   僅同步指定的庫
binlog-ignore-db=    忽略指定的庫

從伺服器:
replicate_do_db=    同步指定的庫
replicate_ignore_db=  忽略指定的庫
replicate_do_table=    同步指定的表
replicate_ignore_table=   忽略指定的表

replicate_wild_do_table=  如aming.%,支援萬用字元    
replicate_wild_ignore_table=    

注: 進行從伺服器的配置時儘量使用引數“replicate_wild_”,使匹配更精確,提升使用效能。

測試

主伺服器:

mysql> show tables;
+---------------------------+
| Tables_in_adaitest        |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
+---------------------------+

刪除表:
mysql> drop table db;
mysql> show tables;
+---------------------------+
| Tables_in_adaitest        |
+---------------------------+
| columns_priv              |
| event                     |
+---------------------------+

從伺服器:

主伺服器刪除表之前:
mysql> show tables;
+---------------------------+
| Tables_in_adaitest        |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
+---------------------------+
主伺服器刪除表之後:
mysql> show tables;
+---------------------------+
| Tables_in_adaitest        |
+---------------------------+
| columns_priv              |
| event                     |
+---------------------------+

即,主從配置成功!

 遇到主從不能正常同步,提示uuid相同的錯誤。這是因為克隆機器導致。
https://www.2cto.com/database/201412/364479.html

相關推薦

17.1 MySQL主從介紹17.2 準備工作17.3 配置17.4 配置17.5 測試主從同步

mysql 17.1 主從介紹 - 17.1 MySQL主從介紹 - 17.2 準備工作 - 17.3 配置主 - 17.4 配置從 - 17.5 測試主從同步 # 17.1 MySQL主從介紹 - MySQL主從又叫做Replication、AB復制。簡單講就是A和B兩臺機器做主從後,在A上

17.1 MySQL主從介紹 17.2 準備工作 17.3 配置 17.4 配置 17.5 測試主從同步

log 查看 前綴 創建 技術分享 mys 同步 裏的 glin 17.1 MySQL主從介紹 master是主,slave是從。 主要應用場景:備份、備份+“從”機器也可以讀、(減輕主的壓力) 17.2 準備工作 需要兩臺機器都安裝了mysql服務,然後啟動mysq

java異常練習題:定義一個MulException類繼承Exception類要求兩數相乘等於100報錯類中定義一個方法在方法中丟擲此異常方法觀察結果

題目描述: 定義一個MulException類繼承Exception類,要求兩數相乘等於100報錯,在主類中定義一個方法,在方法中丟擲此異常,在主方法觀察結果。  定義一個DivException類繼承RuntimeException類,要求兩數相除等於2報錯,在主類中定義

1).定義一個MulException類繼承Exception類要求兩數相乘等於100報錯類中定義一個方法在方法中丟擲此異常方法觀察結果。

1).定義一個MulException類繼承Exception類,要求兩數相乘等於100報錯,在主類中定義一個方法,在方法中丟擲此異常,在主方法觀察結果。 2).定義一個DivException類繼承RuntimeException類,要求兩數相除等於2報錯,在主類中定義一個方法,在方法中丟

【學海無涯---那山那水那人】學海無涯,從放棄到開始...贈人玫瑰手有餘香感悟人生感悟自己當“你”真正看到我的時候也許就是緣分的開始...如有侵權雷同請留言博刪除的文章也可轉載請註明出處僅供個人學習參考謝謝

學海無涯,從放棄到開始...贈人玫瑰,手有餘香,感悟人生,感悟自己,當“你”真正看到我的時候,也許就是緣分的開始...如有侵權雷同,請留言博主刪除,博主的文章也可轉載,請註明出處,僅供個人學習參考,謝...

ExtJS6 treegrid 一次載入資料後點選展開仍然會伺服器取資料

Ext.create("Ext.tree.Panel", { flex: 1, store: { type: 'tree', fi

MySQL主從介紹配置伺服器配置伺服器實現主從同步

MySQL主從配置17.1 MySQL主從介紹MySQL主從又叫做Replication、AB複製。簡單講就是A和B兩臺機器做主從後,在A上寫資料,另外一臺B也會跟著寫資料,兩者資料實時同步。MySQL主從是基於binlog的,主上須開啟binlog才能進行主從。主從過程主將

mysql主從介紹準備工作配置配置主從測試

實時 ini warn 語句 rwx OS www. 技術分享 master 主從介紹 MySQL主從又叫做Replication、AB復制。簡單講就是A和B兩臺機器做主從後,在A上寫數據,另外一臺B也會跟著寫數據,兩者數據實時同步。 MySQL主從是基於binlog的,

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

一、主庫配置 1.修改my.cnf檔案 vi /ect/my.cnf (一般linux下在這裡) 在my.cnf 檔案中加入 log_bin=/usr/local/mysql/binlog/mysql-bin #後面接的是日誌存放路徑(目錄必須存

MySQL主從MySQL proxy Lua讀寫分離設置同步配置分庫分表方案)

否則 count user username 2個 ons 基礎 zxvf 路徑 Mysql Proxy Lua讀寫分離設置一.讀寫分離說明讀寫分離(Read/Write Splitting),基本的原理是讓主數據庫處理事務性增、改、刪操作(INSERT、UPDATE、DE

MySQL主從介紹、準備工作、配置配置、測試主從同步

mysql主從復制MySQL主從介紹 MySQL主從又叫做Replication、AB復制。簡單講就是A和B兩臺機器做主從後,在A上寫數據,另外一臺B也會跟著寫數據,兩者數據實時同步。MySQL主從是基於binlog的,主上須開啟binlog才能進行主從。主從過程:需要保持數據的一致性,才能復制數據1、

MySQL(三):MHA實現MySQL主從架構中服務器的高可用zabbix完成manager重啟

code parallel 可以登錄 authorize sudo word systemctl 命令 nag MHA(Master High Availability)是目前在MySQL高可用方面相對成熟的一個解決方案,MHA在監控到master節點故障時,會提升其中擁有

mysql主從介紹配置配置

報錯 col 還要 type 大致 cee img 技術分享 一個 mysql主從介紹 MySQL主從又叫做Replication、AB復制。簡單講就是A和B兩臺機器做主

MySQL主從介紹配置配置、測試主從同步

Linux學習筆記MySQL的主從介紹 配置主 配置從 測試主從同步 主從配置的常見故障 1.網絡原因:查看網絡是否正常,SELinux是否關閉,iptables是否關閉2.賬號密碼不對:粗心大意,用戶名與密碼輸錯3.POS值不對:show maste status;4.克隆機器以及復制mysql都會

MySQL主從配置主從介紹配置 、測試主從同步

mysql主從配置 MySQL主從介紹(兩臺機器數據同步)主:-->binlog從:-->relaylog主上有一個log dump線程,用來和從的I/O線程傳遞binlog 從上有兩個線程,其中I/O線程用來同步主的binlog並生成relaylog,另外一個SQL線程用來

MaridDB主從復制模型同步配置

mariadb 主從復制 半同步 一、主從復制 MariaDB是將客戶端上傳的數據從主節點復制一份到從節點,從而可以提高讀性能,而這種方式並不能提升寫性能,因為每一份數據都會在從節點上寫一份 缺點:為了增加讀寫性能,數據庫都是將數據 先存入內存中,隨後同步到數據文件中,

linux下在伺服器配置scrapy框架的python爬蟲使用mysql資料庫儲存

最近在做把 爬蟲部署到伺服器上,爬下來的資料再存到資料庫裡。 因為伺服器是linux系統的,所以我們事先需要配置一些環境檔案以及依賴的庫 1、裝python 這一步沒啥好說的吧 2、裝pip,然後再用pip裝依賴的庫: pip install pymysql

Mysql主從複製(GTID)

複製原理: Mysql中有一種日誌叫做bin日誌(二進位制日誌)。這個日誌會記錄下所有修改了資料庫的SQL語句(insert,update,delete,ALTER TABLE,grant等等)。 主從複製的原理其實就是把主伺服器上的BIN日誌複製到從伺服器上執行一遍,這樣

linux上 mysql主從以及主從結構注意事項

~~~~~~~~~~~~~~~主主從結構注意事項~~~~~~~~~~~~~~~~~~ 1:級聯複製 主1------主2----從 主2上需要開啟級聯複製:(要不然主2的從,不會同步資料) vim /etc/my.cf [mysqld] log-slave-updates = true

MySql 配置主從伺服器配置伺服器

1、準備工作: 阿里雲的centos 兩臺伺服器:(mysql版本儘量保持一致,主伺服器的版本不能高於從伺服器) 主伺服器:ip1; 從伺服器:ip2; 待同步的資料庫:slaveDB; 同步主從資料庫資料,保持主從資料一致! 需要注意的是!!!