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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

docker mysql日志_面试官问:了解Mysql主从复制原理么?我呵呵一笑

發(fā)布時間:2024/7/23 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker mysql日志_面试官问:了解Mysql主从复制原理么?我呵呵一笑 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

搭建Mysql主從同步之前,我們先來說他們之間同步的過程與原理:

同步復制過程

獻上一張圖,這張圖詮釋了整個同步過程

主從復制過程:

  • slave節(jié)點與主節(jié)點進行連接,建立主從關系,并把從哪開始同步,及哪個日志文件都一并發(fā)送到master
  • master將修改的數(shù)據(jù)保存到binlog中
  • master開啟binlog dump線程,將binlog日志推送到連接的slave中
  • slave接受到推送的binlog,slave開啟IO線程將數(shù)據(jù)寫到中繼日志(relay log)中
  • slave同時還會開啟一個SQL線程,對比中繼日志中新增的內容,并且解析SQL,回放數(shù)據(jù)到從數(shù)據(jù)庫中

好的,復制過程已經(jīng)說完了,我們現(xiàn)在實踐下,快速搭建一個mysql主從架構。

沒錯,我這里還是使用docker搭建,因為它很香啊!

搭建Mysql 主從

創(chuàng)建mysql網(wǎng)絡

docker network create mysqlNet

安裝mysql

  • 運行mysql主節(jié)點
docker run -p 3306:3306 --name mysql_master -h mysql_master --net=mysqlNet -v ~/docker/mysql/mysql_master/log:/var/log/mysql -v ~/docker/mysql/mysql_master/data:/var/lib/mysql -v ~/docker/mysql/mysql_master/conf:/etc/mysql -e lower_case_table_names=1 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
  • 修改配置文件
# 編輯文件vim ~/docker/mysql/mysql_master/conf[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]init_connect='SET collation_connection=utf8_unicode_ci'init_connect='SET NAMES utf8'character-set-server=utf8collation-server=utf8_unicode_ciskip-character-set-client-handshakeskip-name-resolve## 同一局域網(wǎng)內注意要唯一server-id=1 ## 開啟二進制日志功能,可以隨便取(關鍵)log-bin=mysql-bin
  • 重啟mysql_master
docker restart mysql_master
  • 在master節(jié)點上 創(chuàng)建給從節(jié)點進行復制的用戶
docker exec -it mysql_master mysql -uroot -proot# 創(chuàng)建用戶CREATE USER 'mysql_slave'@'%' IDENTIFIED BY '111111';# 授權GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'mysql_slave'@'%';
  • 運行mysql從節(jié)點
docker run -p 33306:3306 --name mysql_slave -h mysql_slave --net=mysqlNet -v ~/docker/mysql/mysql_slave/log:/var/log/mysql -v ~/docker/mysql/mysql_slave/data:/var/lib/mysql -v ~/docker/mysql/mysql_slave/conf:/etc/mysql -e lower_case_table_names=1 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
  • 編輯從節(jié)點配置文件
# 編輯文件vim ~/docker/mysql/mysql_master/conf[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]init_connect='SET collation_connection=utf8_unicode_ci'init_connect='SET NAMES utf8'character-set-server=utf8collation-server=utf8_unicode_ciskip-character-set-client-handshakeskip-name-resolve## 設置server_id,注意要唯一server-id=2 ## 開啟二進制日志功能,以備Slave作為其它Slave的Master時使用log-bin=mysql-slave-bin ## relay_log配置中繼日志relay_log=edu-mysql-relay-bin## 設置只讀權限read_only = 1innodb_read_only## 使得更新的數(shù)據(jù)寫進二進制日志中l(wèi)og_slave_updates = 1#如果master庫名與salve庫名不同,使用以下配置[需要做映射]#replicate-rewrite-db = [主庫名] -> [從庫名]#如果不是要全部同步[默認全部同步],則指定需要同步的表#replicate-wild-do-table=庫名.表1#replicate-wild-do-table=庫名.表2

現(xiàn)在主從節(jié)點已經(jīng)安裝完成,我們接下來需要讓他們建立關系:

先查看master節(jié)點當前的狀態(tài),主要看下日志文件和當前的位置

docker exec -it mysql_master mysql -uroot -prootshow master status;exitexit

結果如下:文件為mysql-bin.000001 位置為629

拿到這些信息之后,我們現(xiàn)在就可以讓從節(jié)點與主節(jié)點建立關系,并執(zhí)行同步了:

docker exec -it mysql_slave mysql -uroot -prootchange master to master_host='mysql_master', master_user='mysql_slave', master_password='111111', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 629, master_connect_retry=30;

我們繼續(xù)看下slave節(jié)點的狀態(tài)

show slave statusG;1

我們看到我們在文首提到的兩個線程并沒有啟動,所以我們需要手動啟動著兩個線程,一個命令就好了

start slave;

現(xiàn)在可以看到兩個線程已經(jīng)在運行了。
到此,已經(jīng)搭建完成了

測試

這個我就不演示了,大家可以在mysql_master上創(chuàng)建一個數(shù)據(jù)庫,看看是不是會同步到mysql_slave上。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的docker mysql日志_面试官问:了解Mysql主从复制原理么?我呵呵一笑的全部內容,希望文章能夠幫你解決所遇到的問題。

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