日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

配置Mysql实现主从复制与读写分离

發(fā)布時(shí)間:2023/12/18 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 配置Mysql实现主从复制与读写分离 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

環(huán)境說(shuō)明

主從復(fù)制使用mysql自帶的master與slave機(jī)制;讀寫分離使用mysql-proxy實(shí)現(xiàn)!

有服務(wù)器三臺(tái):s1,s2,s3。

s1為web服務(wù)器,裝有httpd,php,mysql,mysql-proxy。

s2為主數(shù)據(jù)庫(kù)服務(wù)器(Master),僅裝mysql。

s3為從數(shù)據(jù)庫(kù)服務(wù)器(Salve),僅裝mysql。

實(shí)現(xiàn)目標(biāo)

s1上的網(wǎng)站的數(shù)據(jù)庫(kù)讀寫操作分?jǐn)偟絪2和s3上,即s2專門進(jìn)行寫操作(也可以讀),s3專門進(jìn)行讀操作;

s2上的數(shù)據(jù)庫(kù)中有數(shù)據(jù)更新時(shí),自動(dòng)將變化同步到s3上的數(shù)據(jù)庫(kù)中。

配置主從復(fù)制(涉及的服務(wù)器:s2,s3)

1.首先在主數(shù)據(jù)庫(kù)服務(wù)器(master)s2上進(jìn)行配置

#編輯mysql配置文件 vim /etc/my.cnf#整體內(nèi)容如下: [client] default_character_set=utf8[mysqld] default_character_set=utf8 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql symbolic-links=0server-id=1 #重要,需和副數(shù)據(jù)庫(kù)的id區(qū)分開,主為1,副為2 log-bin=mysql-bin #定義二進(jìn)制log文件,從數(shù)據(jù)庫(kù)將通過(guò)讀取二進(jìn)制log文件來(lái)更新 binlog-ignore-db=mysql #定義忽略的數(shù)據(jù)庫(kù),即不需要同步的數(shù)據(jù)庫(kù) binlog-do-db=testdb #定義需要同步的數(shù)據(jù)庫(kù),如果沒有此,將同步所有數(shù)據(jù)庫(kù)(除了上面ignore的數(shù)據(jù)庫(kù))[mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid

2.在主數(shù)據(jù)庫(kù)服務(wù)器(master)s2上的mysql中創(chuàng)建一個(gè)供副數(shù)據(jù)庫(kù)(slave)s3連接的賬號(hào)

#在主數(shù)據(jù)庫(kù)服務(wù)器上進(jìn)入mysql命令行 mysql -u root -p (輸入密碼)#成功進(jìn)入mysql命令行,新建一個(gè)用戶 mysql>grant replication slave on *.* to '用戶名'@'副數(shù)據(jù)庫(kù)的IP地址' identified by '密碼';#查看創(chuàng)建用戶是否成功 mysql>select user,host from mysql.user;

?

3.重啟主數(shù)據(jù)庫(kù)服務(wù)器上的mysql服務(wù)

service mysqld restart

4.記錄主數(shù)據(jù)庫(kù)服務(wù)器的master狀態(tài),在配置從服務(wù)器時(shí)需要使用到

#同樣進(jìn)入mysql命令行 mysql>show master status;

類似于此內(nèi)容:

記下Flie和Position。需要注意的是這兩個(gè)值在mysql重啟后變化。所以在第一次配置從服務(wù)器時(shí),需要注意了!

主數(shù)據(jù)庫(kù)的配置完成,現(xiàn)在開始從數(shù)據(jù)庫(kù)服務(wù)器。

5.配置從數(shù)據(jù)庫(kù)服務(wù)器上的my.cnf文件

vim /etc/my.cnf#整體內(nèi)容如: [client] default_character_set=utf8[mysqld] default_character_set=utf8 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql symbolic-links=0server-id=2 #重要,與主數(shù)據(jù)上id不一樣[mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid

6.重啟從數(shù)據(jù)庫(kù)服務(wù)器的mysqld

service mysqld restart

?

7.進(jìn)入mysql命令行,執(zhí)行change master to命令

#進(jìn)入mysql mysql -u root -p (輸入密碼)#進(jìn)入mysql后,先停止slave mysql>slave stop; mysql>change master to>master_host='主數(shù)據(jù)庫(kù)的ip地址或者h(yuǎn)ostname',>master_user='主數(shù)據(jù)庫(kù)中允許從數(shù)據(jù)庫(kù)連接它的用戶名',>master_password='這里是密碼',>master_log_file='mysql-bin.000004',>master_log_pos=261;#master_log_file,master_log_pos即上面使用show master status看到的信息 mysql>slave start;#查看slave狀態(tài) mysql>show slave status\G;

在看到的slave狀態(tài)中,關(guān)鍵信息為:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

如果這兩項(xiàng)都為Yes,說(shuō)明主從之間復(fù)制ok了。

貼上我的slave status:

mysql> show slave status\G; *************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: s2Master_User: userssMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000004Read_Master_Log_Pos: 2308873Relay_Log_File: mysqld-relay-bin.000288Relay_Log_Pos: 251Relay_Master_Log_File: mysql-bin.000004Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 2308873Relay_Log_Space: 5650Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_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: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: 1 row in set (0.00 sec)

最后,可以測(cè)試下,在主數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),創(chuàng)建一張表,插入點(diǎn)數(shù)據(jù),然后在從數(shù)據(jù)庫(kù)中看時(shí)候有數(shù)據(jù)!

配置讀寫分離(涉及的服務(wù)器s1,s2,s3)

1.首先我們想要在web服務(wù)器上安裝mysql-proxy,并配置好它,mysql-proxy官網(wǎng)下載

#進(jìn)入mysqlproxy的目錄 cd /opt/mysql-proxy

?

#創(chuàng)建mysqlproxy.cnf文件 vim mysqlproxy.cnf #整體內(nèi)容如下 [mysql-proxy] user=mysql daemon=true keepalive=true log-level=message log-file=/opt/mysql-proxy/mysqlproxy.log pid-file=/opt/mysql-proxy/mysqlproxy.pid proxy-backend-addresses=主數(shù)據(jù)庫(kù)服務(wù)器IP:端口(默認(rèn)3306) proxy-read-only-backend-addresses=從數(shù)據(jù)庫(kù)服務(wù)器IP:端口(默認(rèn)3306)

?

#編輯環(huán)境變量文件 vim /etc/profile

?

#在最后加入下列兩行內(nèi)容(路徑自行修改) PATH=/opt/mysql-proxy/bin:/opt/mysql-proxy/share/doc/mysql-proxy:$PATH export PATH #可以創(chuàng)建一個(gè)簡(jiǎn)單的腳本,以便于開機(jī)啟動(dòng) vim mysqlproxy #內(nèi)容如下: #!/bin/bash mysql-proxy --defaults-file=/opt/mysql-proxy/mysqlproxy.cnf #創(chuàng)建好后,把mysqlproxy文件復(fù)制到/opt/mysql-proxy/bin目錄下#在開機(jī)啟動(dòng)項(xiàng)中,可以加入mysqlproxy vim etc/rc.d/rc.local #加入: mysqlproxy#確認(rèn)mysqlproxy文件是否具有可執(zhí)行權(quán)限 #最后修改rw-splitting.lua文件 vim /opt/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua #修改這兩個(gè)值 min_idle_connections = 1, //默認(rèn)為4 max_idle_connections = 1, //默認(rèn)為8

?

2.在主數(shù)據(jù)庫(kù)服務(wù)器上進(jìn)入mysql命令行,創(chuàng)建一個(gè)用戶

mysql -u root -p#進(jìn)入mysql后 mysql>grant all on *.* to '用戶名'@'web服務(wù)器地址' identified by '密碼';

此時(shí)由于主數(shù)據(jù)庫(kù)和從數(shù)據(jù)庫(kù)是主從復(fù)制,從數(shù)據(jù)庫(kù)上應(yīng)該已經(jīng)有了上面新建的用戶了。

?

如果還沒配置主從復(fù)制,在從服務(wù)器上執(zhí)行下grant就好。

重要配置已經(jīng)完成了,最后就要確定下防火墻(iptables)了。

web服務(wù)器的mysql-proxy默認(rèn)端口為4040,主從兩個(gè)數(shù)據(jù)庫(kù)3306端口。

測(cè)試讀寫分離

在web服務(wù)器上通過(guò)mysql連接4040端口:

#用戶名為上面第二步中新建的用戶,hostname為其對(duì)應(yīng)的hostname(即web服務(wù)器地址) mysql -u 用戶名 -p -P 4040 -h hostname

輸入密碼后,通過(guò)web服務(wù)器就能連接到s2,所做的變更將直接在s2上生效,而s3將通過(guò)主從復(fù)制,實(shí)現(xiàn)同步!

?

注:web服務(wù)器的mysql的3306端口,不參與讀寫分離主從復(fù)制!web服務(wù)器上的網(wǎng)站程序數(shù)據(jù)庫(kù)只需要連接4040端口即可!

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/keheng/articles/3721107.html

總結(jié)

以上是生活随笔為你收集整理的配置Mysql实现主从复制与读写分离的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。