主從同步

網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì),成都做網(wǎng)站公司-成都創(chuàng)新互聯(lián)公司已向超過千家企業(yè)提供了,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷等服務(wù)!設(shè)計(jì)與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗(yàn),合理的價(jià)格為您打造企業(yè)品質(zhì)網(wǎng)站。
什么是主從同步: 讓其他的數(shù)據(jù)庫服務(wù)器自動(dòng)同步正在提供服務(wù)的數(shù)據(jù)庫服務(wù)器上 的數(shù)據(jù)。
1 添加授權(quán)用戶
MySQL> grant replication slave on *.* to slaveuser@"192.168.4.4" identified by '123456';
2啟用binlog日志
[root@4-3mysql ~]# vim /etc/my.cnf
[mysqld]
server_id=3
log-bin=master11
binlog_format="mixed"
重啟數(shù)據(jù)庫服務(wù)
[root@4-3mysql ~]# systemctl restart mysqld
4 查看日志信息
mysql> show master status;
master11.000001
驗(yàn)證主庫提供的授權(quán)用戶
[root@4-4mysql ~]# mysql -h 192.168.4.3 -u slaveuser -p123456
修改配置文件
[root@4-4mysql ~]# vim /etc/my.cnf
[mysqld]
server_id=4
log-bin=db4
[root@4-4mysql ~]# systemctl restart mysqld
使用本機(jī)器的數(shù)據(jù)管理員登錄,指定主庫信息
show slave status;
mysql> change master to master_host="192.168.4.3", master_user="slaveuser",master_password="123456",master_log_file="master11.000001",master_log_pos=154;
mysql> show slave status\G;
Master_Log_File: master11.000001
Read_Master_Log_Pos: 154
Slave_IO_Running: No
Slave_SQL_Running: No
mysql> start slave;
mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
slave 運(yùn)行2個(gè)線程
Slave_IO:復(fù)制master主機(jī) binlog日志文件里的sql到本機(jī)的relay-log文件里
Slave_SQL:執(zhí)行本機(jī)relay-log文件里的SQL語句,重現(xiàn)Master的數(shù)據(jù)操作
從數(shù)據(jù)庫目錄下會(huì)多的文件
master.info 連接主服務(wù)器信息
relay-log.info 中繼日志信息
主機(jī)名-relay-bin.000000 中繼日志文件
主機(jī)名-relay-bin.index 中繼日志索引
測(cè)試主從同步配置
在主庫服務(wù)器上添加訪問數(shù)據(jù)的用戶
mysql> grant all on bbsdb.* to yaya@"%" identified by '123456';
mysql> show master status;
| master11.000001 | 446
在客戶端使用授權(quán)用戶連接主庫,產(chǎn)生的數(shù)據(jù)在從庫也能查到
[root@4-5test ~]# mysql -h 192.168.4.3 -uyaya -p123456
MySQL [(none)]> create database bbsdb;
這時(shí)在
[root@4-3mysql ~]# 主服務(wù)器
[root@4-4mysql ~]# 從服務(wù)器
上都會(huì)生成相應(yīng)的表
將從服務(wù)器變被獨(dú)立服務(wù)器,關(guān)閉同步
mysql> stop slave;
rm -rf master.info relay-log.info
rm -rf localhost-relay-bin*
故障分析及排除
原因分析
連接不上master數(shù)據(jù)庫服務(wù)器
解決辦法
檢查物理連接ping 檢查授權(quán)用戶
檢查是否有防火墻規(guī)則
關(guān)閉SElinux
或是binlog日志文件指定錯(cuò)誤
主從同步結(jié)構(gòu)模式
一主一從
一主多從
主從從
主主結(jié)構(gòu)(互為)
主從同步常用配置參數(shù)
寫在vim /etc/my.cnf
[mysqld]
選項(xiàng)=值
主庫配置文件(對(duì)所有的從都有效)
不允許同步的庫 binlog_ignore_db=庫名1,庫名2
只允許同步的庫 binlog_do_db=庫名1,庫名2
[root@4-3mysql ~]# vim /etc/my.cnf
binlog_do_db=dba
[root@4-3mysql ~]# systemctl restart mysqld
從庫配置文件(只對(duì)本機(jī)有效)
只同步的庫 replicate_do_db=庫名1,庫名2
不同步的庫 replicate_ignore_db=庫名1,庫名2
級(jí)聯(lián)復(fù)制 log_slave_updates
數(shù)據(jù)讀寫分離 maxscale軟件 + 一主一從
什么是讀寫分離: 把客戶端訪問數(shù)據(jù)時(shí)的查詢請(qǐng)求select 和寫請(qǐng)求insert 給不同的數(shù)據(jù)庫服務(wù)器去處理
寫(主服務(wù))
讀 (從服務(wù))
一。
裝包
[root@4-5test ~]# rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm
修改配置文件:指定數(shù)據(jù)庫服務(wù)器
[root@4-5test ~]# vim /etc/maxcale.cnf
9 [maxscale]
10 threads=auto 開啟線程 根據(jù)cpu
18 [server1] #數(shù)據(jù)庫服務(wù)器名
19 type=server
20 address=192.168.4.3 #指定ip
21 port=3306
22 protocol=MySQLBackend
23
24 [server2] #數(shù)據(jù)庫服務(wù)器名
25 type=server
26 address=192.168.4.4 #指定ip
27 port=3306
28 protocol=MySQLBackend
36 [MySQL Monitor]
37 type=monitor
38 module=mysqlmon
39 servers=server1,server2 #監(jiān)聽兩臺(tái) 數(shù)據(jù)庫服務(wù)器
40 user=scalemon #授權(quán)用戶名
41 passwd=123456 #授權(quán)用戶密碼
42 monitor_interval=10000 #毫秒 每十秒監(jiān)聽一次
52 #[Read-Only Service] #Read-Only 全注釋
53 #type=service
54 #router=readconnroute
55 #servers=server1
56 #user=myuser
57 #passwd=mypwd
58 #router_options=slave
63 [Read-Write Service]
64 type=service
65 router=readwritesplit
66 servers=server1,server2 #監(jiān)聽兩臺(tái) 數(shù)據(jù)庫服務(wù)器
67 user=maxscale #授權(quán)用戶名
68 passwd=123456 #授權(quán)用戶密碼
69 max_slave_connections=100%
75 [MaxAdmin Service] #定義軟件管理服務(wù) 不用改
76 type=service
77 router=cli #使用方式 命令行
85 #[Read-Only Listener] #Read-Only 全注釋
86 #type=listener
87 #service=Read-Only Service
88 #protocol=MySQLClient
89 #port=4008
91 [Read-Write Listener]
92 type=listener
93 service=Read-Write Service #服務(wù)名
94 protocol=MySQLClient
95 port=4006 #讀寫分離監(jiān)聽端口號(hào)(默認(rèn))
97 [MaxAdmin Listener] #管理服務(wù)監(jiān)聽
98 type=listener
99 service=MaxAdmin Service
100 protocol=maxscaled
101 socket=default
102 port=4009 #指定管理端口
根據(jù)配置文件設(shè)置,在數(shù)據(jù)庫上添加相應(yīng)的授權(quán)用戶
scalemon 123456 監(jiān)控?cái)?shù)據(jù)庫服務(wù)狀態(tài)的用戶(數(shù)據(jù)庫服務(wù)狀態(tài)和主從同步狀態(tài))
mysql> grant replication slave,replication client on *.* to scalemon@'%' identified by '123456';
mysql> grant select on mysql.* to maxscale@'%' identified by '123456';
maxscale 123456 檢查客戶端連接時(shí)使用的用戶名和密碼在監(jiān)視的數(shù)據(jù)庫服務(wù)器上是否存在
在代理主機(jī)測(cè)試
mysql -h292.168.4.3 -uscalemon -p123456
mysql -h292.168.4.3 -umaxscale -p123456
mysql -h292.168.4.4 -umaxscale -p123456
mysql -h292.168.4.4 -uscalemon -p123456
啟動(dòng)服務(wù)
[root@4-5test ~]# maxscale -f /etc/maxscale.cnf
[root@4-5test ~]# netstat -pantu | grep maxscale
tcp 0 0 192.168.4.5:42703 192.168.4.3:3306 ESTABLISHED 4877/maxscale
tcp 0 0 192.168.4.5:44918 192.168.4.4:3306 ESTABLISHED 4877/maxscale
tcp6 0 0 :::4009 :::* LISTEN 4877/maxscale
tcp6 0 0 :::4006 :::* LISTEN 4877/maxscale
二。
測(cè)試配置
在代理服務(wù)器本機(jī)訪問管理服務(wù)
[root@4-5test ~]# maxadmin -uadmin -pmariadb -P4009
MaxScale> list servers
Servers.
----------------------------------+------------------------------+------------+----------------------+------------------------------
Server | Address | Port | Connections | Status
----------------------------------+------------------------------+------------+----------------------+------------------------------
server1 | 192.168.4.3 | 3306 | 0 | Master, Running
server2 | 192.168.4.4 | 3306 | 0 | Slave, Running
----------------------------------+------------------------------+------------+----------------------+-------------------------------
在客戶端 訪問代理服務(wù)器 存儲(chǔ)數(shù)據(jù)或查詢數(shù)據(jù)
4-3
mysql> create database bbsdb;
Query OK, 1 row affected (0.00 sec)
mysql> create table bbsdb.t1(id int);
Query OK, 0 rows affected (0.26 sec)
MySQL [(none)]> show grants;
+---------------------------------------------------------------------------------------+
| Grants for yaya@% |
+---------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'yaya'@'%' |
| GRANT ALL PRIVILEGES ON `bbsdb`.* TO 'yaya'@'%' |
+---------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
查看時(shí)顯示為從服務(wù)
MySQL [(none)]> select @@hostname;
+---------------------+
| @@hostname |
+---------------------+
| 4-4mysql |
+---------------------+
1 row in set (0.00 sec)
MySQL [(none)]> insert into bbsdb.t1 values(100);
添加后切換為主服務(wù)
MySQL [(none)]> select @@hostname;
+---------------------+
| @@hostname |
+---------------------+
| 4-3mysql |
+---------------------+
1 row in set (0.00 sec)
網(wǎng)站欄目:DBA成長(zhǎng)之路---mysql主從同步,讀寫分離
標(biāo)題路徑:http://www.chinadenli.net/article30/gpdipo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、移動(dòng)網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、微信公眾號(hào)、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)