主從同步
網(wǎng)站設計、成都網(wǎng)站設計,成都做網(wǎng)站公司-成都創(chuàng)新互聯(lián)公司已向超過千家企業(yè)提供了,網(wǎng)站設計,網(wǎng)站制作,網(wǎng)絡營銷等服務!設計與技術結合,多年網(wǎng)站推廣經(jīng)驗,合理的價格為您打造企業(yè)品質(zhì)網(wǎng)站。
什么是主從同步: 讓其他的數(shù)據(jù)庫服務器自動同步正在提供服務的數(shù)據(jù)庫服務器上 的數(shù)據(jù)。
1 添加授權用戶
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ù)庫服務
[root@4-3mysql ~]# systemctl restart mysqld
4 查看日志信息
mysql> show master status;
master11.000001
驗證主庫提供的授權用戶
[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
使用本機器的數(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 運行2個線程
Slave_IO:復制master主機 binlog日志文件里的sql到本機的relay-log文件里
Slave_SQL:執(zhí)行本機relay-log文件里的SQL語句,重現(xiàn)Master的數(shù)據(jù)操作
從數(shù)據(jù)庫目錄下會多的文件
master.info 連接主服務器信息
relay-log.info 中繼日志信息
主機名-relay-bin.000000 中繼日志文件
主機名-relay-bin.index 中繼日志索引
測試主從同步配置
在主庫服務器上添加訪問數(shù)據(jù)的用戶
mysql> grant all on bbsdb.* to yaya@"%" identified by '123456';
mysql> show master status;
| master11.000001 | 446
在客戶端使用授權用戶連接主庫,產(chǎn)生的數(shù)據(jù)在從庫也能查到
[root@4-5test ~]# mysql -h 192.168.4.3 -uyaya -p123456
MySQL [(none)]> create database bbsdb;
這時在
[root@4-3mysql ~]# 主服務器
[root@4-4mysql ~]# 從服務器
上都會生成相應的表
將從服務器變被獨立服務器,關閉同步
mysql> stop slave;
rm -rf master.info relay-log.info
rm -rf localhost-relay-bin*
故障分析及排除
原因分析
連接不上master數(shù)據(jù)庫服務器
解決辦法
檢查物理連接ping 檢查授權用戶
檢查是否有防火墻規(guī)則
關閉SElinux
或是binlog日志文件指定錯誤
主從同步結構模式
一主一從
一主多從
主從從
主主結構(互為)
主從同步常用配置參數(shù)
寫在vim /etc/my.cnf
[mysqld]
選項=值
主庫配置文件(對所有的從都有效)
不允許同步的庫 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
從庫配置文件(只對本機有效)
只同步的庫 replicate_do_db=庫名1,庫名2
不同步的庫 replicate_ignore_db=庫名1,庫名2
級聯(lián)復制 log_slave_updates
數(shù)據(jù)讀寫分離 maxscale軟件 + 一主一從
什么是讀寫分離: 把客戶端訪問數(shù)據(jù)時的查詢請求select 和寫請求insert 給不同的數(shù)據(jù)庫服務器去處理
寫(主服務)
讀 (從服務)
一。
裝包
[root@4-5test ~]# rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm
修改配置文件:指定數(shù)據(jù)庫服務器
[root@4-5test ~]# vim /etc/maxcale.cnf
9 [maxscale]
10 threads=auto 開啟線程 根據(jù)cpu
18 [server1] #數(shù)據(jù)庫服務器名
19 type=server
20 address=192.168.4.3 #指定ip
21 port=3306
22 protocol=MySQLBackend
23
24 [server2] #數(shù)據(jù)庫服務器名
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)聽兩臺 數(shù)據(jù)庫服務器
40 user=scalemon #授權用戶名
41 passwd=123456 #授權用戶密碼
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)聽兩臺 數(shù)據(jù)庫服務器
67 user=maxscale #授權用戶名
68 passwd=123456 #授權用戶密碼
69 max_slave_connections=100%
75 [MaxAdmin Service] #定義軟件管理服務 不用改
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 #服務名
94 protocol=MySQLClient
95 port=4006 #讀寫分離監(jiān)聽端口號(默認)
97 [MaxAdmin Listener] #管理服務監(jiān)聽
98 type=listener
99 service=MaxAdmin Service
100 protocol=maxscaled
101 socket=default
102 port=4009 #指定管理端口
根據(jù)配置文件設置,在數(shù)據(jù)庫上添加相應的授權用戶
scalemon 123456 監(jiān)控數(shù)據(jù)庫服務狀態(tài)的用戶(數(shù)據(jù)庫服務狀態(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 檢查客戶端連接時使用的用戶名和密碼在監(jiān)視的數(shù)據(jù)庫服務器上是否存在
在代理主機測試
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
啟動服務
[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
二。
測試配置
在代理服務器本機訪問管理服務
[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
----------------------------------+------------------------------+------------+----------------------+-------------------------------
在客戶端 訪問代理服務器 存儲數(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)
查看時顯示為從服務
MySQL [(none)]> select @@hostname;
+---------------------+
| @@hostname |
+---------------------+
| 4-4mysql |
+---------------------+
1 row in set (0.00 sec)
MySQL [(none)]> insert into bbsdb.t1 values(100);
添加后切換為主服務
MySQL [(none)]> select @@hostname;
+---------------------+
| @@hostname |
+---------------------+
| 4-3mysql |
+---------------------+
1 row in set (0.00 sec)
網(wǎng)站欄目:DBA成長之路---mysql主從同步,讀寫分離
標題路徑:http://chinadenli.net/article30/gpdipo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗、移動網(wǎng)站建設、靜態(tài)網(wǎng)站、手機網(wǎng)站建設、微信公眾號、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)