中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么樣配置mysql主從復制、mysql-5.5異步及半同步

發布時間:2020-05-18 15:07:49 來源:網絡 閱讀:253 作者:三月 欄目:數據庫

下文主要給大家帶來怎么樣配置mysql主從復制、mysql-5.5異步及半同步,希望這些內容能夠帶給大家實際用處,這也是我編輯怎么樣配置mysql主從復制、mysql-5.5異步及半同步這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。

master
1 啟用二進制日志
log-bin = master-bin
log-bin-index = master-bin.index
2 選擇一個唯一的server id
server-id = [0~2^32]
3 創建具有復制權限的用戶
replication slave,復制的從節點
replication client,聯系master,獲取信息的權限
slave
1 啟用二進制日志
relay-log = relay-log
relay-log-index = relay-log.index
2 選擇一個唯一的server id,和主不同
server-id = [0~2^32]
3 連接至主云服務器復制文件
從哪里開始復制?
1)master是新的,slave從頭開始復制
2)master已經運行一段時間,在master執行一次備份,記錄二進制日志文件名和事件位置,在slave還原數據,連接至哪一個二進制文件的哪一個位置?
mysql> change master to master_host= ,master_port= ,master_log_file= ,master_log_pos= ,master_user= ,master_password= ;
mysql> start slave;
4 mysql復制線程
master會為每一個slave啟動1個dump線程
master:dump
slave:IO_thread,SQL_thread
可單獨啟動
mysql> start slave IO_thread
mysql> start slave SQL_thread
怎么樣配置mysql主從復制、mysql-5.5異步及半同步
5 半同步復制時應指定同步超時時間,一旦超時,降級為異步復制


mysql主從異步復制
    使用二進制格式安裝mysql,并初始化、mtsql服務腳本復制、my.cnf配置文件復制。
導出PATH,方便使用mysql命令
# vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin

master
1 修改配置文件
# vim /etc/my.cnf
[mysqld]
datadir = /data/mysql
innodb_file_per_table = 1
log-bin=master-bin
log-bin-index=master-bin.index
server-id   = 1
啟動mysql
# service mysqld start
2 授權slave復制
mysql> grant replication slave on *.* to 'replicationuser'@'192.168.8.31' identified by 'replicationuser';
mysql> flush privileges;
mysql> flush tables with read lock; # 鎖住table為只讀
3 查看master二進制日志文件狀態,在slave上需要使用
mysql> show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 |      355 |              |                  |
+-------------------+----------+--------------+------------------+
mysql> show binlog events in "master-bin.000001";
怎么樣配置mysql主從復制、mysql-5.5異步及半同步

slave
1 修改配置文件
# vim /etc/my.cnf
[mysqld]
datadir = /data/mysql
innodb_file_per_table = 1
relay-log = relay-log
relay-log-index = relay-log.index
server-id   = 10
啟動mysql
# service mysqld start
2 配置slave同步設置,并啟動slave復制
mysql> change master to master_host='192.168.8.30',master_user='replicationuser',master_password='replicationuser',master_log_file='master-bin.000001',master_log_pos=355;
mysql> start salve;
3 查看slave的狀態
mysql> show slave status\G
Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.8.30
                  Master_User: replicationuser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000001
          Read_Master_Log_Pos: 438
               Relay_Log_File: relay-log.000004
                Relay_Log_Pos: 254
        Relay_Master_Log_File: master-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 438
4 在master查看slave
mysql> show slave hosts;
其他設置和說明
1 slave上不允許數據庫的寫操作,因此在slave上設置為用戶只讀模式,但此設置對具有super權限的用戶無效
# vim /etc/my.cnf
[mysqld]
read-only = on
重啟mysql,即生效
# service mysqld restart
重啟mysqld,復制線程會自動重啟
修改配置后,或者不重啟,在數據庫中直接修改參數也可以
查看只讀模式是否生效
mysql> show global variables like 'read_only';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| read_only     | ON    |
+---------------+-------+
2 為了保證master bin-log不在緩沖區緩存,立即同步到磁盤上,減少主從復制的延遲時間,在master設定
[mysqld] 
sync-binlog = on
重啟mysql,即生效
# service mysqld restart
重啟mysqld,復制線程會自動重啟
修改配置后,或者不重啟,在數據庫中直接修改參數也可以
查看立即同步模式是否生效
mysql> show global variables like 'sync_binlog';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sync_binlog   | 0     |
+---------------+-------+
3 重啟mysqld,復制線程會自動重啟,存在哪些問題,如何禁止?
    當master執行了一些誤操作,由于延遲原因,誤操作還未同步slave;此時在slave關閉mysql,備份數據恢復到master上,啟動slave的mysql,讓IO_thread跳過剛才的誤操作,再啟動復制功能。若slave啟動后,主從復制立即開始,還會同步剛才的誤操作。
    不讓其隨mysql自動啟動,防止同步誤操作。
連接master 需要這兩個文件master.info,relay-log.info,臨時移除。slave無法連接master
在數據文件下
master.info 記錄了登陸master和相關信息
relay-log.info 記錄了relay-log和master-bin的相關信息 
4 從云服務器的相關日志會記錄在slave的錯誤日志中。
5 若master工作了一定時間,此時做主從的注意事項
5.1 master鎖表
mysql> flush tables with read lock;
5.2 master mysql的數據庫導出
# mysqldump mydb > mydb.sql
5.3 slave 創建同名數據庫,并導入數據庫
# mysqldump mydb < mydb.sql
5.4 此時操作和全新的數據庫是相同的,注意master_log_file,master_log_pos即可
6 mysql復制過濾
在master上
# vim /etc/my.cnf
[mysqld]
binlog-do-db=db1,db2
binlog-ignore-db=db1,db2
master binlog-ignore-db帶來的問題
    不記錄部分數據庫的二進制日志,二進制日志不完整。當云服務器崩潰時,只能恢復記錄了二進制日志的數據,未記錄的將不能恢復,因此不建議使用此選項。
在slave上
可以進行數據庫級別的過濾,也可以進行表級別的過濾
# vim /etc/my.cnf
[mysqld]
數據庫級別
replicate-do-db=
replicate-ignore-db=
表級別
replicate-do-table=
replicate-ignore-table=
在表級別使用通配
replicate-wild-do-table=mydb.tb% # 僅復制mydb中以tb開頭的所有表
replicate-wild-ignore-table=mydb.tb_ # 僅復制mydb中以tb開頭的、后面跟上一個字符的表
slave replicate-ignore-db帶來的問題
    使用此選項,雖不記錄指定slave數據庫的二進制日志,但是中繼日志是完整的,因此會占有slave的帶寬資源。
    綜上,如果必須對表進行過濾,建議在slave上進行。
半同步主從復制
1 master 添加模塊
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
mysql> set global rpl_semi_sync_master_enabled = 1;
mysql> show variables like 'rpl%';
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| rpl_recovery_rank                  | 0     |
| rpl_semi_sync_master_enabled       | ON   |
| rpl_semi_sync_master_timeout       | 10000 | # 異步復制超時時間,單位ms
| rpl_semi_sync_master_trace_level   | 32    |
| rpl_semi_sync_master_wait_no_slave | ON    | # 是否必須等待slave上線
+------------------------------------+-------+
2 slave 添加模塊
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
mysql> set global rpl_semi_sync_slave_enabled = 1;
mysql> show variables like 'rpl%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| rpl_recovery_rank               | 0     |
| rpl_semi_sync_slave_enabled     | ON    |
| rpl_semi_sync_slave_trace_level | 32    |
+---------------------------------+-------+
3 若此時主從同步是開啟的,設置不會立即生效,需重啟slave io_thread
3.1 master狀態查看
mysql> show global status like 'rpl%';
+--------------------------------------------+-------------+
| Variable_name                              | Value       |
+--------------------------------------------+-------------+
| Rpl_semi_sync_master_clients               | 0           |
| Rpl_semi_sync_master_net_avg_wait_time     | 0           |
| Rpl_semi_sync_master_net_wait_time         | 0           |
| Rpl_semi_sync_master_net_waits             | 0           |
| Rpl_semi_sync_master_no_times              | 0           |
| Rpl_semi_sync_master_no_tx                 | 0           |
| Rpl_semi_sync_master_status                | ON          |
| Rpl_semi_sync_master_timefunc_failures     | 0           |
| Rpl_semi_sync_master_tx_avg_wait_time      | 0           |
| Rpl_semi_sync_master_tx_wait_time          | 0           |
| Rpl_semi_sync_master_tx_waits              | 0           |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0           |
| Rpl_semi_sync_master_wait_sessions         | 0           |
| Rpl_semi_sync_master_yes_tx                | 0           |
| Rpl_status                                 | AUTH_MASTER |
+--------------------------------------------+-------------+
3.2 slave狀態查看
mysql> show global status like 'rpl%';
+----------------------------+-------------+
| Variable_name              | Value       |
+----------------------------+-------------+
| Rpl_semi_sync_slave_status | OFF         |
| Rpl_status                 | AUTH_MASTER |
+----------------------------+-------------+
4 只重啟io_thread即可
mysql> stop slave io_thread;
mysql> start slave io_thread;
4.1 master狀態查看
mysql> show global status like 'rpl%';
+--------------------------------------------+-------------+
| Variable_name                              | Value       |
+--------------------------------------------+-------------+
| Rpl_semi_sync_master_clients               | 1           |
+--------------------------------------------+-------------+
4.2 slave狀態查看
mysql> show global status like 'rpl%';
+----------------------------+-------------+
| Variable_name              | Value       |
+----------------------------+-------------+
| Rpl_semi_sync_slave_status | ON          |
| Rpl_status                 | AUTH_MASTER |
+----------------------------+-------------+
5 測試
    當半同步超時后(10000ms)一次后,會降級為異步復制。
在slave停止io_thread
mysql> stop slave io_thread;
    在master進行寫操作時,會卡住100000ms,之后降級為異步復制,恢復速度;
6 為了使參數永久生效,在Master和Slave的my.cnf中編輯: 
# On Master 
[mysqld] 
rpl_semi_sync_master_enabled=1 
rpl_semi_sync_master_timeout=1000 # 1 second 
 
# On Slave 
[mysqld] 
rpl_semi_sync_slave_enabled=1  
7 mysql主從機制比較脆弱,若需重啟master,需先要停止slave復制,即stop slave。
監控和監控主從復制工具
percona-toolkit(mattkit-tools)
https://www.percona.com/downloads/percona-toolkit/
# yum localinstall -y percona-toolkit-2.2.18-1.noarch.rpm --nogpgcheck
安裝之后會出現一大堆pt命令
pt-slave-delay:使slave比master慢一些時間
pt-table-checksum:通過單向加密比較主從的數據是否一致
rhel使用的是光盤中的rpm庫,無法解決percona的依賴
yum localinstall時出現如下提示
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package
mysql ssl 簡要說明
授權時,增加ssl選項,強制使用ssl;若無此選項,不受限制,即使啟用了ssl功能,復制時使用和不使用ssl都可以
mysql> grant replication slave on *.* to 'replicationuser'@'192.168.8.31' identified by 'replicationuser' require ssl;
ssl需要的內容
mysql> show global variables like '%ssl%';
+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| have_openssl  | DISABLED |
| have_ssl      | DISABLED |
| ssl_ca        |          |
| ssl_capath    |          |
| ssl_cert      |          |
| ssl_cipher    |          |
| ssl_key       |          |
+---------------+----------+

對于以上關于怎么樣配置mysql主從復制、mysql-5.5異步及半同步,大家是不是覺得非常有幫助。如果需要了解更多內容,請繼續關注我們的行業資訊,相信你會喜歡上這些內容的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岳阳县| 穆棱市| 郑州市| 阳泉市| 泊头市| 长岭县| 马边| 崇礼县| 翼城县| 奉新县| 海南省| 云林县| 延长县| 综艺| 甘谷县| 电白县| 石渠县| 秭归县| 新兴县| 南皮县| 康乐县| 铜川市| 长岭县| 淳安县| 崇礼县| 元朗区| 双柏县| 昌宁县| 高阳县| 门头沟区| 沙洋县| 巨野县| 卓资县| 金堂县| 明水县| 阳江市| 安西县| 沭阳县| 江北区| 出国| 郯城县|