一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Linux|Centos|Ubuntu|系統(tǒng)進(jìn)程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務(wù)器之家 - 服務(wù)器系統(tǒng) - Centos - CentOS服務(wù)器平臺搭建mysql主從復(fù)制與讀寫分離的方法

CentOS服務(wù)器平臺搭建mysql主從復(fù)制與讀寫分離的方法

2022-03-08 17:33愛代碼也愛生活 Centos

這篇文章主要介紹了CentOS服務(wù)器平臺搭建mysql主從復(fù)制與讀寫分離的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了CentOS平臺搭建mysql主從復(fù)制與讀寫分離的步驟、設(shè)置方法、相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了CentOS服務(wù)器搭建mysql主從復(fù)制與讀寫分離的方法。分享給大家供大家參考,具體如下:

mysql 主從復(fù)制的優(yōu)點(diǎn):

① 如果主服務(wù)器出現(xiàn)問題, 可以快速切換到從服務(wù)器提供的服務(wù),保證高可用性
② 可以在從服務(wù)器上執(zhí)行查詢操作, 降低主服務(wù)器的訪問壓力
③ 可以在從服務(wù)器上執(zhí)行備份, 以避免備份期間影響主服務(wù)器的服務(wù)

注意事項(xiàng):

① server-id必須唯一,一般使用ip的后三位
② 從庫Slave_IO_Running:NO 可能原因:帳號無權(quán)限操作
③ Can't execute the query because you have a conflicting read lock,解鎖下即可 unlock tables;
④ 一般只有更新不頻繁的數(shù)據(jù)或者對實(shí)時性要求不高的數(shù)據(jù)可以通過從服務(wù)器查詢, 實(shí)時性要求高的數(shù)據(jù)仍然需要從主數(shù)據(jù)庫獲得
⑤ 修改完主從服務(wù)器的配置需要重啟mysql:service mysqld restart

主機(jī)A: 192.168.10.111
從機(jī)B: 192.168.10.124

請先分別安裝mysql,版本需一致,裝了即可跳過

 

復(fù)制代碼 代碼如下:
yum install mysql mysql-server #輸入y即可自動安裝,直到安裝完成

 

1、先登錄主機(jī) A,在主服務(wù)器上,設(shè)置一個從數(shù)據(jù)庫的賬戶,使用REPLICATION SLAVE(從復(fù)制)賦予權(quán)限,如:

復(fù)制代碼 代碼如下:
mysql>GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.10.124' IDENTIFIED BY '123456'

 

賦予從機(jī)權(quán)限,有多臺從機(jī),就執(zhí)行多次。

?
1
mysql>flush privileges;

2、 打開主機(jī)A的my.cnf,輸入如下:(修改主數(shù)據(jù)庫的配置文件my.cnf,開啟BINLOG,并設(shè)置server-id的值,修改之后必須重啟mysql服務(wù))

?
1
2
3
4
5
server-id        = 1  #主機(jī)標(biāo)示,整數(shù)
log_bin         = /var/log/mysql/mysql-bin.log  #確保此文件可寫,開啟bin-log
read-only       =0 #主機(jī),讀寫都可以
binlog-do-db     =test  #需要備份數(shù)據(jù),多個寫多行
binlog-ignore-db  =mysql #不需要備份的數(shù)據(jù)庫,多個寫多行

可以通過mysql>show variables like 'log_%'; 驗(yàn)證二進(jìn)制日志是否已經(jīng)啟動。 

3、現(xiàn)在可以停止主數(shù)據(jù)的的更新操作,并生成主數(shù)據(jù)庫的備份,我們可以通過mysqldump到處數(shù)據(jù)到從數(shù)據(jù)庫,當(dāng)然了,你也可以直接用cp命令將數(shù)據(jù)文件復(fù)制到從數(shù)據(jù)庫去,注意在導(dǎo)出數(shù)據(jù)之前先對主數(shù)據(jù)庫進(jìn)行READ LOCK,以保證數(shù)據(jù)的一致性

?
1
2
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.19 sec)

然后mysqldump導(dǎo)出數(shù)據(jù):

復(fù)制代碼 代碼如下:
mysqldump -h127.0.0.1 -p3306 -uroot -p test > /data/backup/test.sql

 

4、得到主服務(wù)器當(dāng)前二進(jìn)制日志名和偏移量,這個操作的目的是為了在從數(shù)據(jù)庫啟動后,從這個點(diǎn)開始進(jìn)行數(shù)據(jù)的恢復(fù)。

?
1
2
3
4
5
6
7
mysql> show master status;
+------------------+----------+--------------+------------------+
| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000007 |   517 | test     | mysql      |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

最好在主數(shù)據(jù)庫備份完畢,恢復(fù)寫操作。

?
1
2
mysql> unlock tables;
Query OK, 0 rows affected (0.28 sec)

5、將剛才主數(shù)據(jù)備份的test.sql復(fù)制到從數(shù)據(jù)庫(navicat、phpmyadmin、命令行都可以),進(jìn)行導(dǎo)入。

6、修改從數(shù)據(jù)庫的my.cnf,增加server-id參數(shù),指定復(fù)制使用的用戶,主數(shù)據(jù)庫服務(wù)器的ip,端口以及開始執(zhí)行復(fù)制日志的文件和位置。打開從機(jī)B的my.cnf,輸入(修改之后必須重啟mysql服務(wù))

?
1
2
3
4
5
6
7
8
9
server-id    = 2
log_bin     = /var/log/mysql/mysql-bin.log
master-host   =192.168.10.111
master-user   =backup
master-pass   =123456
master-port   =3306
master-connect-retry=60 #如果從服務(wù)器發(fā)現(xiàn)主服務(wù)器斷掉,重新連接的時間差(秒)
replicate-do-db =test #只復(fù)制某個庫
replicate-ignore-db=mysql #不復(fù)制某個庫

7、在從服務(wù)器上,啟動slave進(jìn)程

?
1
mysql> start slave;

8、在從服務(wù)器進(jìn)行show salve status驗(yàn)證

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
        Slave_IO_State: Waiting for master to send event
         Master_Host: 192.168.10.111
         Master_User: root
         Master_Port: 3306
        Connect_Retry: 5
       Master_Log_File: mysql-bin.000007
     Read_Master_Log_Pos: 263
        Relay_Log_File: mysqld-relay-bin.000002
        Relay_Log_Pos: 408
    Relay_Master_Log_File: mysql-bin.000007
       Slave_IO_Running: Yes
      Slave_SQL_Running: Yes
       Replicate_Do_DB: test
     Replicate_Ignore_DB: mysql
      Replicate_Do_Table:
    Replicate_Ignore_Table:
   Replicate_Wild_Do_Table:
 Replicate_Wild_Ignore_Table:
          Last_Errno: 0
          Last_Error:
         Skip_Counter: 0
     Exec_Master_Log_Pos: 263
       Relay_Log_Space: 564
       Until_Condition: None
        Until_Log_File:
        Until_Log_Pos: 0
      Master_SSL_Allowed: No
      Master_SSL_CA_File:
      Master_SSL_CA_Path:
       Master_SSL_Cert:
      Master_SSL_Cipher:
        Master_SSL_Key:
    Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
        Last_IO_Errno: 0
        Last_IO_Error:
        Last_SQL_Errno: 0
        Last_SQL_Error:
1 row in set (0.00 sec)

提示

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

說明配置成功了

9、測試主從服務(wù)器是否能同步

插入 修改 刪除 增加字段 修改字段 增加表自己測試都可以

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
[xjp@server22 ~]$mysql -uroot -p123456
mysql> create database test;
mysql> create table user(id int);
mysql> insert into user values(1),(2),(3),(4),(5),(6);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from user;
+----+
| id |
+----+
| 1 |
| 2 |
+----+
2rows in set (0.00 sec)
mysql> select * from user;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+----+
6 rows in set (0.00 sec)
mysql> update user set id=11 where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from user;
+----+
| id |
+----+
| 11 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+----+
6 rows in set (0.00 sec)
mysql> delete from user where id=2;
Query OK, 1 row affected (0.00 sec)
mysql> select * from user;
+----+
| id |
+----+
| 11 |
| 3 |
| 4 |
| 5 |
| 6 |
+----+
5 rows in set (0.00 sec)
mysql> alter table user add name varchar(50);
Query OK, 5 rows affected (0.01 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from user;
+----+------+
| id | name |
+----+------+
| 11 | NULL |
| 3 | NULL |
| 4 | NULL |
| 5 | NULL |
| 6 | NULL |
+----+------+
5 rows in set (0.00 sec)
mysql> ALTER TABLE user MODIFY COLUMN name VARCHAR(200);
Query OK, 5 rows affected (0.01 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> desc user;
+-------+--------------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id  | int(11)   | NO  |   | NULL  |    |
| name | varchar(200) | YES |   | NULL  |    |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> create table user2(id int);
Query OK, 0 rows affected (0.01 sec)
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test      |
| user      |
| user2     |
+----------------+
3 rows in set (0.00 sec)
mysql>

在從服務(wù)器查看是否同步過來 如果一致說明成功

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
mysql> use test;
Database changed
mysql> select * from user;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+----+
2 rows in set (0.00 sec)
mysql> select * from user;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+----+
6 rows in set (0.00 sec)
mysql> select * from user;
+----+
| id |
+----+
| 11 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+----+
6 rows in set (0.00 sec)
mysql> select * from user;
+----+
| id |
+----+
| 11 |
| 3 |
| 4 |
| 5 |
| 6 |
+----+
5 rows in set (0.00 sec)
mysql> select * from user;
+----+------+
| id | name |
+----+------+
| 11 | NULL |
| 3 | NULL |
| 4 | NULL |
| 5 | NULL |
| 6 | NULL |
+----+------+
5 rows in set (0.00 sec)
mysql> desc user;
+-------+--------------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id  | int(11)   | NO  |   | NULL  |    |
| name | varchar(200) | YES |   | NULL  |    |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test      |
| user      |
| user2     |
+----------------+
3 rows in set (0.00 sec)
mysql>
mysql binlog日志查看: 
show binlog events\G;
*************************** 12. row ***************************
  Log_name: mysql-bin.000007
    Pos: 985
 Event_type: Query
 Server_id: 1
End_log_pos: 1075
    Info: use `test`; delete from user where id=2
*************************** 13. row ***************************
  Log_name: mysql-bin.000007
    Pos: 1075
 Event_type: Query
 Server_id: 1
End_log_pos: 1175
    Info: use `test`; alter table user add name varchar(50)
*************************** 14. row ***************************
  Log_name: mysql-bin.000007
    Pos: 1175
 Event_type: Query
 Server_id: 1
End_log_pos: 1287
    Info: use `test`; ALTER TABLE user MODIFY COLUMN name VARCHAR(200)
*************************** 15. row ***************************
  Log_name: mysql-bin.000007
    Pos: 1287
 Event_type: Query
 Server_id: 1
End_log_pos: 1376
    Info: use `test`; create table user2(id int)
15 rows in set (0.00 sec)

很早的時候搭建的了,走不少彎路,根據(jù)當(dāng)時記錄的寫了下

希望本文所述對大家CentOS服務(wù)器設(shè)置有所幫助。

原文鏈接:https://blog.csdn.net/nuli888/article/details/51866388

延伸 · 閱讀

精彩推薦
  • Centoscentos不小心刪除/root目錄該如何解決?

    centos不小心刪除/root目錄該如何解決?

    一些朋友最近在問小編centos不小心刪除/root目錄該如何解決?今天小編就為大家分享centos不小心刪除/root目錄解決辦法;希望對大家會有幫助,有需要的朋友...

    腳本之家8022019-05-29
  • CentosCentos7運(yùn)用/dev/shm進(jìn)行網(wǎng)站優(yōu)化

    Centos7運(yùn)用/dev/shm進(jìn)行網(wǎng)站優(yōu)化

    這篇文章主要介紹了LINUX中Centos7運(yùn)用/dev/shm進(jìn)行網(wǎng)站優(yōu)化相關(guān)知識點(diǎn),對此有興趣的朋友參考學(xué)習(xí)下。...

    彬菌9912022-03-02
  • Centoscentos 安裝與操作方法

    centos 安裝與操作方法

    這篇文章主要介紹了centos 安裝與操作方法,需要的朋友可以參考下...

    centos之家5272019-07-11
  • CentosCentOS7設(shè)置日期和時間方法以及基本概念介紹

    CentOS7設(shè)置日期和時間方法以及基本概念介紹

    這篇文章主要介紹了CentOS7設(shè)置日期和時間方法以及基本概念介紹,本文講解使用CentOS7中的新命令timedatectl設(shè)置日期時間方法,需要的朋友可以參考下 ...

    CentOS之家6522019-09-19
  • CentosCentOS6.5下Redis安裝與配置詳細(xì)步驟

    CentOS6.5下Redis安裝與配置詳細(xì)步驟

    本篇文章主要介紹了CentOS6.5下Redis安裝與配置詳細(xì)步驟,詳細(xì)介紹redis單機(jī)單實(shí)例安裝與配置,服務(wù)及開機(jī)自啟動。有興趣的可以了解一下。...

    飛流11452021-12-24
  • CentosCentOS下Uptime命令詳解

    CentOS下Uptime命令詳解

    在Linux下,我們可以使用uptime命令,而且此命令不必使用root權(quán)限。uptime命令在系統(tǒng)中已經(jīng)默認(rèn)安裝了。今天小編為大家?guī)淼氖荂entOS下Uptime命令詳解;希望...

    CentOS之家11482019-06-19
  • CentosCentOS 6.6實(shí)現(xiàn)永久修改DNS地址的方法

    CentOS 6.6實(shí)現(xiàn)永久修改DNS地址的方法

    這篇文章主要介紹了CentOS 6.6實(shí)現(xiàn)永久修改DNS地址的方法,涉及針對CentOS配置文件的相關(guān)設(shè)置技巧,具有一定參考借鑒價值,需要的朋友可以參考下 ...

    Linux社區(qū)4472020-08-21
  • CentosCentos 7開啟網(wǎng)卡自動獲取IP的詳細(xì)方法

    Centos 7開啟網(wǎng)卡自動獲取IP的詳細(xì)方法

    本篇文章主要介紹了Centos 7開啟網(wǎng)卡自動獲取IP的詳細(xì)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    凌鋒8972021-12-29
主站蜘蛛池模板: 久草草在线视视频 | 韩国伊人 | 手机国产乱子伦精品视频 | 国内精品久久久久影院网站 | 黑人粗长巨茎小说 | 精品久久免费观看 | 香蕉久久ac一区二区三区 | 国产精品色图 | zzjj中国| 国产成人精品高清在线观看99 | 大伊人青草狠狠久久 | 免费人成在线观看视频播放 | 国产欧美日韩精品一区二区三区 | 久久爽狠狠添AV激情五月 | 奇米网狠狠网 | 非洲一级毛片又粗又长aaaa | 亚洲成年男人的天堂网 | 国产第一福利影院 | 欧美日韩精品免费一区二区三区 | 亚洲精品中文字幕第一区 | 亚洲国产精品综合久久一线 | 国产99在线观看 | 香蕉tv国产在线永久播放 | 亚洲人成影院午夜网站 | 天天噜| 398av影院视频在线 | aaa一级最新毛片 | 嗯啊视频在线 | 精品国产成a人在线观看 | 日本国产最新一区二区三区 | 国产资源站 | 大胆国模一区二区三区伊人 | 免费欧美一级 | 阿 好深 快点 老师受不了 | 免费一级毛片在线播放放视频 | 女仆掀起蕾丝裙被打屁股作文 | 欧美最猛性xxxxx动态图 | 国产亚洲综合精品一区二区三区 | 成人猫咪maomiav永久网址 | 亚洲精品久久久WWW游戏好玩 | 青青青青青操 |