在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

配置MySQL主從復制和讀寫分離

馬哥Linux運維 ? 來源:博客園varlemon ? 2024-10-23 11:44 ? 次閱讀

實驗環境

序號 主機名 IP地址 備注
1 mysql-master 192.168.204.201 MySQL主庫
2 mysql-slave 192.168.204.202 MySQL從庫
3 appserver 192.168.204.111 應用服務器

78a241d8-90b7-11ef-a511-92fbcf53809c.png

安裝配置MySQL數據庫

1.使用yum安裝mysql和mysql-server

yum install -y mariadb mariadb-server

2.啟動mysql服務

systemctl start mariadb
systemctl enable mariadb

3.查看啟動狀態

systemctl status mariadb
netstat -anpt | grep "mysql" --color

78b6a164-90b7-11ef-a511-92fbcf53809c.png

4.允許3306端口通過防火墻

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

78d0e2a4-90b7-11ef-a511-92fbcf53809c.png

5.設置MySQL密碼

mysql_secure_installation

6.在mysql-master上創建數據庫

使用root用戶登錄MySQL

mysql -uroot -p123456

創建數據庫并添加數據

create database db_test;
show databases;
use db_test;

create table if not exists user_info(
    username varchar(16) not null,
    password varchar(32) not null,
    realname varchar(16) default '',
    primary key (username)
)default charset=utf8;
show tables;

insert into user_info(username, password, realname) values
('10001', '123456', '小明'),
('10002', '123456', '小紅'),
('10003', '123456', '小王'),
('10004', '123456', '小張'),
('10005', '123456', '小李');

select * from user_info where 1;

78e9d052-90b7-11ef-a511-92fbcf53809c.png

在mysql-master上授權數據庫訪問權限

GRANT all ON db_test.* TO 'admin'@'%' identified BY '123456';
flush privileges;

在mysql-slave、appserver上登錄mysql-master數據庫

mysql -h 192.168.204.201 -uroot -p123456

78fa0fb2-90b7-11ef-a511-92fbcf53809c.png

在mysql-master上撤銷數據庫訪問權限

REVOKE all ON db_test.* FROM 'admin'@'%';
flush privileges;

配置master和slave兩臺mysql服務器的主從復制

1.在master數據庫上啟用binlog日志,建立從庫賬號rep

查看binlog日志狀態

show variables like 'log_bin';

79125d1a-90b7-11ef-a511-92fbcf53809c.png

更改my.cnf配置文件

cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

792b3858-90b7-11ef-a511-92fbcf53809c.png

重啟MySQL,查看binlog日志

systemctl restart mariadb
mysql -uroot -p123456 -e "show variables like 'log_bin';"
mysql -uroot -p123456 -e "show master status;"

79418248-90b7-11ef-a511-92fbcf53809c.png

記住此處File和Position的值

建立從庫賬號

grant replication slave on *.* to rep@'192.168.204.202' identified by '123456';
show grants for rep@'192.168.204.%';

7960ff88-90b7-11ef-a511-92fbcf53809c.png

2.在master數據庫上備份現有數據庫

對master數據庫鎖表

flush tables with read lock;

備份master數據庫

mysqldump -uroot -p123456 --all-databases | gzip > /root/database_`date '+%Y-%m-%d'`.sql.gz

將備份文件拷貝至slave

scp database_*.sql.gz root@192.168.204.202:/root

3. 配置slave數據庫,在slave上恢復數據庫

配置slave數據庫server-id,關閉binlog日志

cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
# vim /etc/my.cnf

#log-bin=mysql-bin
#binlog_format=mixed
server-id       = 2

79764d70-90b7-11ef-a511-92fbcf53809c.png

4.重啟slave的mysql

重啟mysql服務

systemctl restart mariadb

查看log_bin和server_id的值

show variables like 'log_bin';
show variables like 'server_id';

798b6188-90b7-11ef-a511-92fbcf53809c.png

5.將數據恢復至slave

gzip -d /root/database_*.sql.gz
mysql -uroot -p123456 < /root/database_*.sql
mysql -uroot -p123456 -e "show databases;"

79a1ccfc-90b7-11ef-a511-92fbcf53809c.png

6.在slave數據庫上配置復制參數

在slave上配置復制參數
將MASTER_LOG_FILE和MASTER_LOG_POS的值替換成上述master上查詢的值

change master to
MASTER_HOST='192.168.204.201',
MASTER_USER='rep',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=245;

79c29f72-90b7-11ef-a511-92fbcf53809c.png

在slave上配置啟用復制

start slave;

79da9a8c-90b7-11ef-a511-92fbcf53809c.png

在slave上查看復制狀態

show slave status G;

79fe27cc-90b7-11ef-a511-92fbcf53809c.png

兩個均為Yes即可

重啟master和slave的mysql服務

systemctl restart mariadb

在master上為數據庫db_test增加記錄,在slave查看同步情況

-- mysql-master
insert into db_test.user_info (username, password, realname) values ('20001', '123456', 'Tom');
select * from db_test.user_info where 1;

7a1388e2-90b7-11ef-a511-92fbcf53809c.png

-- mysql-slave
select * from db_test.user_info where 1;

7a31212c-90b7-11ef-a511-92fbcf53809c.png

已經實現了主從復制

在appserver上配置mysql讀寫分離

1.在appserver上安裝mysql-proxy

從https://downloads.mysql.com/archives/proxy/下載mysql-proxy

cd ~
wget https://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-sles11-x86-64bit.tar.gz
tar -xzvf mysql-proxy-0.8.5-linux-sles11-x86-64bit.tar.gz
cp -r mysql-proxy-0.8.5-linux-sles11-x86-64bit /usr/local/mysql-proxy

2.在appserver上配置mysql-proxy

創建主配置文件

cd /usr/local/mysql-proxy
mkdir lua        #創建腳本存放目錄
mkdir logs       #創建日志目錄
cp share/doc/mysql-proxy/rw-splitting.lua ./lua/  #復制讀寫分離配置文件
cp share/doc/mysql-proxy/admin-sql.lua ./lua/     #復制管理腳本
vim /etc/mysql-proxy.cnf     #創建配置文件

主配置文件內容

使用前,請去掉注釋

#vim /etc/mysql-proxy.cnf

[mysql-proxy]
user=root #運行mysql-proxy用戶
admin-username=myproxy #主從mysql共有的用戶
admin-password=123456 #用戶的密碼
proxy-address=127.0.0.1:3306 #mysql-proxy運行ip和端口,不加端口默認4040
proxy-read-only-backend-addresses=192.168.204.202 #指定后端從slave讀取數據
proxy-backend-addresses=192.168.204.201 #指定后端master寫入數據
proxy-lua-script=/usr/local/mysql-proxy/lua/rw-splitting.lua #指定讀寫分離配置文件位置
admin-lua-script=/usr/local/mysql-proxy/lua/admin-sql/lua #指定管理腳本
log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log #日志位置
log-level=info #定義log日志級別,由高到低分別(error|warning|info|message|debug)

修改權限

chmod 660 /etc/mysql-proxy.cnf

3.在appserver上修改讀寫分離配置文件

vim /usr/local/mysql-proxy/lua/rw-splitting.lua

修改以下內容

--- config
--
-- connection pool
if not proxy.global.config.rwsplit then
        proxy.global.config.rwsplit = {
                min_idle_connections = 1,  -- 默認超過4個連接數時才開始讀寫分離
                max_idle_connections = 1,  -- 默認為8

                is_debug = false
        }
end

7a613826-90b7-11ef-a511-92fbcf53809c.png

4.在appserver上啟動mysql-proxy

啟動

/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/etc/mysql-proxy.cnf --daemon

查看進程

netstat -anpt | grep 3306

7a77ad72-90b7-11ef-a511-92fbcf53809c.png

5.在mysql-master和mysql-slave上分別給myproxy授權

在mysql-master和mysql-slave上授權給mysql-proxy

grant all on *.* to 'myproxy'@'192.168.204.%' identified by '123456';
flush privileges;

6.在appserver上連接mysql-proxy,測試讀寫分離

在appserver上通過mysql-proxy操作數據庫

mysql -h 127.0.0.1 -umyproxy -p123456 -e "select * from db_test.user_info where 1;"
mysql -h 127.0.0.1 -umyproxy -p123456 -e "insert into db_test.user_info (username, password, realname) values ('30001', '123456', 'Jack');"
mysql -h 127.0.0.1 -umyproxy -p123456 -e "select * from db_test.user_info where 1;"

7a8d337c-90b7-11ef-a511-92fbcf53809c.png

在mysql-master上查詢

mysql -uroot -p123456 -e "select * from db_test.user_info where 1;"

7ab42478-90b7-11ef-a511-92fbcf53809c.png

在mysql-master上查詢

mysql -uroot -p123456 -e "select * from db_test.user_info where 1;"

7ad663b2-90b7-11ef-a511-92fbcf53809c.png

經驗證,已實現讀寫分離

鏈接:https://www.cnblogs.com/connect/p/mysql-master-slave-copy-and-read-write-separation.html

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9160

    瀏覽量

    85415
  • 數據庫
    +關注

    關注

    7

    文章

    3799

    瀏覽量

    64388
  • MySQL
    +關注

    關注

    1

    文章

    809

    瀏覽量

    26564

原文標題:配置MySQL主從復制和讀寫分離

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    MySQL的幾種復制配置

    MySQL主從復制、主主復制、雙主多從配置
    發表于 04-16 09:50

    基于二進制安裝MySQL主從復制

    二進制安裝MySQL實現主從復制
    發表于 03-10 09:43

    mysql主從復制

    mysql 主從復制
    發表于 04-28 14:30

    基于mycat的Mysql主從復制讀寫分離全攻略

    基于mycat的Mysql主從復制讀寫分離全攻略
    發表于 09-08 10:10 ?4次下載
    基于mycat的<b class='flag-5'>Mysql</b><b class='flag-5'>主從復制</b><b class='flag-5'>讀寫</b><b class='flag-5'>分離</b>全攻略

    mysql數據庫同步原理

    MySQL主從復制原理 為了減輕主庫的壓力,應該在系統應用層面做讀寫分離,寫操作走主庫,讀操作走從庫,下圖為MySQL官網給出的
    發表于 09-28 11:49 ?0次下載
    <b class='flag-5'>mysql</b>數據庫同步原理

    利用MySQL進行一主一從的主從復制

    本文講述了如何使用MyBatisPlus+ShardingSphereJDBC進行讀寫分離,以及利用MySQL進行一主一從的主從復制
    的頭像 發表于 07-28 09:47 ?1036次閱讀

    MySQL主從復制原理詳解

    簡單講,MySQL主從復制就是數據寫入一臺服務器(主服務器)后,同時還會額外寫入另外的服務器(從服務器)。也就是說數據會寫多份,這樣做的目的主要有兩個:
    的頭像 發表于 02-06 10:27 ?1089次閱讀

    一個操作把MySQL主從復制整崩了

    最近公司某項目上反饋mysql主從復制失敗,被運維部門記了一次大過,影響到了項目的驗收推進,那么究竟是什么原因導致的呢?而主從復制的原理又是什么呢?本文就對排查分析的過程做一個記錄。
    的頭像 發表于 05-11 11:14 ?548次閱讀
    一個操作把<b class='flag-5'>MySQL</b><b class='flag-5'>主從復制</b>整崩了

    什么是Redis主從復制

    Redis主從復制 來自靈魂的拷問:什么是Redis主從復制? 簡言之就是: 主對外從對內,主可寫從不可寫 主掛了,從不可為主 看下面的圖加深下理解: 對,你沒看錯,Redis主從復制沒有動態選舉
    的頭像 發表于 10-09 15:09 ?419次閱讀
    什么是Redis<b class='flag-5'>主從復制</b>

    mysql主從復制三種模式

    MySQL主從復制是一種常見的數據同步方式,它可以實現將一個數據庫的更改同步到其他多個數據庫的功能。主從復制可以提高數據庫的可用性和性能,以及提供故障恢復和數據備份的支持。在MySQL
    的頭像 發表于 11-16 14:04 ?1545次閱讀

    mysql如何實現主從復制的具體流程

    主從復制MySQL數據庫中常用的數據復制技術之一,它的主要目的是將一個數據庫服務器上的數據復制到其他服務器上,以實現數據的備份、高可用和分布式部署。下面將詳細介紹
    的頭像 發表于 11-16 14:10 ?786次閱讀

    mysql主從復制主要有幾種模式

    MySQL主從復制MySQL數據庫中常用的一種數據復制方式,用于實現數據的備份、負載均衡、故障恢復等目的。主從復制主要有以下幾種模式: 異
    的頭像 發表于 11-16 14:15 ?1171次閱讀

    mysql主從復制的原理

    MySQL主從復制是一種數據庫復制技術,它允許將一個MySQL數據庫的更新操作自動復制到其他MySQL
    的頭像 發表于 11-16 14:18 ?491次閱讀

    mysql主從復制 混合類型的復制

    使用行級復制和語句級復制。本文將詳細介紹MySQL主從復制的概念、原理、配置步驟以及優缺點,并重點討論混合類型
    的頭像 發表于 11-16 14:20 ?558次閱讀

    mysql主從復制數據不一致怎么辦

    MySQL主從復制是一種常用的數據復制技術,用于實現數據的實時同步和分布式部署。然而,在實際應用中,主從復制過程中出現數據不一致的情況也是很常見的。本文將從以下幾個方面介紹
    的頭像 發表于 11-16 14:35 ?2398次閱讀
    主站蜘蛛池模板: 日本一区二区三区不卡在线看| 伊人888| 欧美夜夜| 国产亚洲小视频| 五月激情六月| 亚洲卡5卡6卡7国色天香| 中国一级特黄真人毛片免费看| 亚洲香蕉影视在线播放| 四虎影永久地址www| 欧美日韩国产乱了伦| 国产看色免费| 天天干天天干| 欧美成人区| 最色成人网| 久久夜色精品国产尤物| 真实一级一级一片免费视频| 免费看片免| 亚洲日本在线观看| 人人成人免费公开视频| 97一本大道波多野吉衣| 黄色日批网站| 免费亚洲一区| 日韩一级特黄毛片在线看| 国产一级片免费| 人人干狠狠操| 亚洲免费区| 免费看一毛一级毛片视频| 亚洲第一网站| 717影院理论午夜伦不卡久久| 免费啪视频观在线视频在线| 一级色视频| 国产成人综合久久| 黑人黑粗硬视频| 亚洲成人7777| 国产精品久久久久久久久ktv| 日本加勒比黑人| 中文字幕一精品亚洲无线一区| 国产亚洲综合色就色| 欧美性黑人极品hd网站| 欧美日一区| 色极影院|