最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL 數(shù)據(jù)庫兩臺主機(jī)同步實(shí)戰(zhàn)(linux)

 更新時間:2009年04月18日 12:10:18   作者:  
MySQL支持單向、異步復(fù)制,復(fù)制過程中一個服務(wù)器充當(dāng)主服務(wù)器,而一個或多個其它服務(wù)器充當(dāng)從服務(wù)器。主服務(wù)器將更新寫入二進(jìn)制日志文件,并維護(hù)日志文件的一個索引以跟蹤日志循環(huán)。

當(dāng)一個從服務(wù)器連接到主服務(wù)器時,它通知主服務(wù)器從服務(wù)器在日志中讀取的最后一次成功更新的位置。從服務(wù)器接收從那時起發(fā)生的任何更新,然后封鎖并等待主服務(wù)器通知下一次更新。

在實(shí)際項(xiàng)目中,兩臺分布于異地的主機(jī)上安裝有MySQL數(shù)據(jù)庫,兩臺服務(wù)器互為主備,客戶要求當(dāng)其中一臺機(jī)器出現(xiàn)故障時,另外一臺能夠接管服務(wù)器上的應(yīng)用,這就需要兩臺數(shù)據(jù)庫的數(shù)據(jù)要實(shí)時保持一致,在這里使用MySQL的同步功能實(shí)現(xiàn)雙機(jī)的同步復(fù)制。

以下是操作實(shí)例:

1、數(shù)據(jù)庫同步設(shè)置

主機(jī)操作系統(tǒng):RedHat Enterprise Linux 5

數(shù)據(jù)庫版本:MySQL Ver 14.12 Distrib 5.0.22

前提:MySQL數(shù)據(jù)庫正常啟動

假設(shè)兩臺主機(jī)地址分別為:

ServA:10.240.136.9

ServB:10.240.136.149

1.1 配置同步賬號

在ServA上增加一個ServB可以登錄的帳號:

MySQL>GRANT all privileges ON *.* TO tongbu@'10.240.136.149' IDENTIFIED BY '123456';

在ServB上增加一個ServA可以登錄的帳號:

MySQL>GRANT all privileges ON *.* TO tongbu@'10.240.136.9' IDENTIFIED BY '123456';

1.2 配置數(shù)據(jù)庫參數(shù)

1、以root用戶登錄ServA,修改ServA的my.cnf文件

vi /etc/my.cnf

在[MySQLd]的配置項(xiàng)中增加如下配置:

1 default-character-set=utf8
2
3 log-bin=MySQL-bin
4
5 relay-log=relay-bin
6
7 relay-log-index=relay-bin-index
8
9 server-id=1
10
11 master-host=10.240.136.149
12
13 master-user=tongbu
14
15 master-password=123456
16
17 master-port=3306
18
19 master-connect-retry=30
20
21 binlog-do-db=umsdb
22
23 replicate-do-db=umsdb
24
25 replicate-ignore-table=umsdb.boco_tb_menu
26
27 replicate-ignore-table=umsdb.boco_tb_connect_log
28
29 replicate-ignore-table=umsdb.boco_tb_data_stat
30
31 replicate-ignore-table=umsdb.boco_tb_log_record
32
33 replicate-ignore-table=umsdb.boco_tb_workorder_record

2、以root用戶登錄ServB,修改ServB的my.cnf文件

vi /etc/my.cnf

在[MySQLd]的配置項(xiàng)中增加如下配置:

1 default-character-set=utf8
2
3 log-bin=MySQL-bin
4
5 relay-log=relay-bin
6
7 relay-log-index=relay-bin-index
8
9 server-id=2
10
11 master-host=10.240.136.9
12
13 master-user=tongbu
14
15 master-password=123456
16
17 master-port=3306
18
19 master-connect-retry=30
20
21 binlog-do-db=umsdb
22
23 replicate-do-db=umsdb
24
25 replicate-ignore-table=umsdb.boco_tb_menu
26
27 replicate-ignore-table=umsdb.boco_tb_connect_log
28
29 replicate-ignore-table=umsdb.boco_tb_data_stat
30
31 replicate-ignore-table=umsdb.boco_tb_log_record
32
33 replicate-ignore-table=umsdb.boco_tb_workorder_record

1.3 手工執(zhí)行數(shù)據(jù)庫同步

假設(shè)以ServA為主服務(wù)器,在ServB上重啟MySQL:

service MySQLd restart

在ServB上用root用戶登錄MySQL,執(zhí)行:

MySQL> stop slave;

MySQL> load data from master;

MySQL> start slave;

在ServA上重啟MySQL:

service MySQLd restart

1.4 查看數(shù)據(jù)庫同步狀態(tài)

在MySQL命令提示符下執(zhí)行:

MySQL> show slave status\G

將顯示同步進(jìn)程的狀態(tài),如下所示,兩行藍(lán)色字體為slave進(jìn)程狀態(tài),如果都為yes表示正常;紅色字體表示同步錯誤指示,如果有問題會有錯誤提示:

1 *************************** 1. row ***************************
2
3 Slave_IO_State: Waiting for master to send event
4
5 Master_Host: 10.21.2.90
6
7 Master_User: tongbu
8
9 Master_Port: 3306
10
11 Connect_Retry: 30
12
13 Master_Log_File: localhost-bin.000005
14
15 Read_Master_Log_Pos: 39753882
16
17 Relay_Log_File: localhost-relay-bin.000062
18
19 Relay_Log_Pos: 9826663
20
21 Relay_Master_Log_File: localhost-bin.000005
22
23 Slave_IO_Running: Yes
24
25 Slave_SQL_Running: Yes
26
27 Replicate_Do_DB: bak,umsdb
28
29 Replicate_Ignore_DB:
30
31 Replicate_Do_Table:
32
33 Replicate_Ignore_Table: umsdb.boco_tb_connect_log,umsdb.boco_tb_menu,umsdb.boco_tb_workorder_record,

umsdb.boco_tb_data_stat,umsdb.boco_tb_log_record
34
35 Replicate_Wild_Do_Table:
36
37 Replicate_Wild_Ignore_Table:
38
39 Last_Errno: 0
40
41 Last_Error:
42
43 Skip_Counter: 0
44
45 Exec_Master_Log_Pos: 39753882
46
47 Relay_Log_Space: 9826663
48
49 Until_Condition: None
50
51 Until_Log_File:
52
53 Until_Log_Pos: 0
54
55 Master_SSL_Allowed: No
56
57 Master_SSL_CA_File:
58
59 Master_SSL_CA_Path:
60
61 Master_SSL_Cert:
62
63 Master_SSL_Cipher:
64
65 Master_SSL_Key:
66
67 Seconds_Behind_Master:

3、數(shù)據(jù)庫同步測試

配置完數(shù)據(jù)庫后進(jìn)行測試,首先在網(wǎng)絡(luò)正常情況下測試,在ServA上進(jìn)行數(shù)據(jù)庫操作,和在ServB上進(jìn)行數(shù)據(jù)庫操作,數(shù)據(jù)都能夠同步過去。

拔掉ServB主機(jī)上的網(wǎng)線,然后在ServA上做一些數(shù)據(jù)庫操作,之后再恢復(fù)ServB的網(wǎng)絡(luò)環(huán)境,但是在ServB上卻看不到同步的數(shù)據(jù),通過命令show slave status\G查看發(fā)現(xiàn)Slave_IO_Running的狀態(tài)是No,這種狀態(tài)持續(xù)很長一段時間,數(shù)據(jù)才能同步到ServB上去。這是什么問題呢?同步延遲不會這么大吧。后來通過網(wǎng)上查找相關(guān)資料,找到一個同步延遲相關(guān)的參數(shù):

--slave-net-timeout=seconds

參數(shù)含義:當(dāng)slave從主數(shù)據(jù)庫讀取log數(shù)據(jù)失敗后,等待多久重新建立連接并獲取數(shù)據(jù)。

于是在配置文件中增加該參數(shù),設(shè)置為60秒

slave-net-timeout=60

重啟MySQL數(shù)據(jù)庫后測試,該問題解決。

4、 數(shù)據(jù)庫同步失效的解決

當(dāng)數(shù)據(jù)同步進(jìn)程失效后,首先手工檢查slave主機(jī)當(dāng)前備份的數(shù)據(jù)庫日志文件在master主機(jī)上是否存在,在slave主機(jī)上運(yùn)行:

MySQL> show slave status\G

一般獲得如下的信息:

1 *************************** 1. row ***************************
2
3 Slave_IO_State: Waiting for master to send event
4
5 Master_Host: 10.21.3.240
6
7 Master_User: tongbu
8
9 Master_Port: 3306
10
11 Connect_Retry: 30
12
13 Master_Log_File: MySQL-bin.000001
14
15 Read_Master_Log_Pos: 360
16
17 Relay_Log_File: localhost-relay-bin.000003
18
19 Relay_Log_Pos: 497
20
21 Relay_Master_Log_File: MySQL-bin.000001
22
23 Slave_IO_Running: Yes
24
25 Slave_SQL_Running: Yes
26
27 Replicate_Do_DB: bak
28
29 Replicate_Ignore_DB:
30
31 Replicate_Do_Table:
32
33 Replicate_Ignore_Table:
34
35 Replicate_Wild_Do_Table:
36
37 Replicate_Wild_Ignore_Table:
38
39 Last_Errno: 0
40
41 Last_Error:
42
43 Skip_Counter: 0
44
45 Exec_Master_Log_Pos: 360
46
47 Relay_Log_Space: 497
48
49 Until_Condition: None
50
51 Until_Log_File:
52
53 Until_Log_Pos: 0
54
55 Master_SSL_Allowed: No
56
57 Master_SSL_CA_File:
58
59 Master_SSL_CA_Path:
60
61 Master_SSL_Cert:
62
63 Master_SSL_Cipher:
64
65 Master_SSL_Key:
66
67 Seconds_Behind_Master: 0
其中Master_Log_File描述的是master主機(jī)上的日志文件。

在master上檢查當(dāng)前的數(shù)據(jù)庫列表:

MySQL> show master logs;

得到的日志列表如下:

+----------------------+-----------+

| Log_name | File_size |

+----------------------+-----------+

| localhost-bin.000001 | 495 |

| localhost-bin.000002 | 3394 |

+----------------------+-----------+

如果slave主機(jī)上使用的的Master_Log_File對應(yīng)的文件在master的日志列表中存在,在slave主機(jī)上開啟從屬服務(wù)器線程后可以自動同步:

MySQL> start slave;

如果master主機(jī)上的日志文件已經(jīng)不存在,則需要首先從master主機(jī)上恢復(fù)全部數(shù)據(jù),再開啟同步機(jī)制。

在slave主機(jī)上運(yùn)行:

MySQL> stop slave;

在master主機(jī)上運(yùn)行:

MySQL> stop slave;

在slave主機(jī)上運(yùn)行:

MySQL> load data from master;

MySQL> reset master;

MySQL> start slave;

在master主機(jī)上運(yùn)行:

MySQL> reset slave;

MySQL>start slave;

注意:LOAD DATA FROM MASTER目前只在所有表使用MyISAM存儲引擎的數(shù)據(jù)庫上有效。

相關(guān)文章

  • Prometheus 監(jiān)控MySQL使用grafana展示

    Prometheus 監(jiān)控MySQL使用grafana展示

    這篇文章主要介紹prometheus通過mysql exporter+node exporter監(jiān)控mysql,并使用grafana進(jìn)行圖表展示的相關(guān)內(nèi)容,感興趣的效果版可以參考下文
    2021-08-08
  • mysql聲明游標(biāo)的方法

    mysql聲明游標(biāo)的方法

    在本篇文章里小編給大家整理的是關(guān)于mysql聲明游標(biāo)的方法和實(shí)例內(nèi)容,需要的朋友們可以參考下。
    2020-09-09
  • 詳解MySQL的limit用法和分頁查詢語句的性能分析

    詳解MySQL的limit用法和分頁查詢語句的性能分析

    本篇文章主要介紹了詳解MySQL的limit用法和分頁查詢語句的性能分析,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • MYSQL row_number()與over()函數(shù)用法詳解

    MYSQL row_number()與over()函數(shù)用法詳解

    這篇文章主要介紹了MYSQL row_number()與over()函數(shù)用法詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • MySQL存儲Json字符串遇到的問題與解決方法

    MySQL存儲Json字符串遇到的問題與解決方法

    要在MySQL中存儲數(shù)據(jù),必須定義數(shù)據(jù)庫和表結(jié)構(gòu),下面這篇文章主要給大家介紹了關(guān)于MySQL存儲Json字符串遇到的問題與解決方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • mysql-5.7.28 在Linux下的安裝教程圖解

    mysql-5.7.28 在Linux下的安裝教程圖解

    這篇文章主要介紹了mysql-5.7.28 的Linux安裝,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • MySQL怎么給字符串字段加索引

    MySQL怎么給字符串字段加索引

    本文主要介紹了MySQL怎么給字符串字段加索引,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 升級到mysql-connector-java8.0.27的注意事項(xiàng)

    升級到mysql-connector-java8.0.27的注意事項(xiàng)

    這篇文章主要介紹了升級到mysql-connector-java8.0.27的注意事項(xiàng),凡是升級總會碰到點(diǎn)問題,換了連接器后部署果然報錯了,下面小編給大家分享解決方法,需要的朋友可以參考下
    2021-12-12
  • MySQL thread_stack連接線程的優(yōu)化

    MySQL thread_stack連接線程的優(yōu)化

    當(dāng)有新的連接請求時,MySQL首先會檢查Thread Cache中是否存在空閑連接線程,如果存在則取出來直接使用,如果沒有空閑連接線程,才創(chuàng)建新的連接線程
    2017-04-04
  • MySQL8設(shè)置自動創(chuàng)建時間和自動更新時間的實(shí)現(xiàn)方法

    MySQL8設(shè)置自動創(chuàng)建時間和自動更新時間的實(shí)現(xiàn)方法

    在實(shí)際應(yīng)用中,我們時常會需要用到創(chuàng)建時間和更新時間這兩個字段,下面這篇文章主要給大家介紹了關(guān)于MySQL8設(shè)置自動創(chuàng)建時間和自動更新時間的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2023-03-03

最新評論

天水市| 铅山县| 嘉荫县| 公主岭市| 长丰县| 彰化县| 长治县| 富阳市| 毕节市| 汉寿县| 兰溪市| 凤冈县| 定州市| 突泉县| 无极县| 手机| 阳信县| 柯坪县| 盘锦市| 扎囊县| 招远市| 陕西省| 察雅县| 日照市| 平湖市| 威海市| 高要市| 芮城县| 兴业县| 巴彦县| 四子王旗| 铜川市| 宿迁市| 黄浦区| 勐海县| 乌鲁木齐县| 黔西县| 天峻县| 昌图县| 社旗县| 东安县|