mysql在线搭建从库_Mysql主从库搭建
基于Docker的Mysql主從復制搭建
首先安裝docker
拉取mysql鏡像:5.7版本
啟動主從數據庫容器
docker run -p 3339:3306 --name Maste -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 # Master(主庫)
docker run -p 3340:3306 --name Slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 # Slave(從庫)
啟動后用可用數據庫軟件測試一下是否連通。
配置Master
Master配置文件修改
docker exec -it 容器名 /bin/bash #進入主庫docker
apt-get update #更新安裝源
apt-get install -y vim #安裝vim
vim /etc/mysql/my.cnf #編輯my.cnf配置文件
[mysqld]
## 同一局域網內注意要唯一
server-id=100
## 開啟二進制日志功能,可以隨便取(關鍵)
log-bin=mysql-bin
2. 重啟mysql容器。
3. 進入主庫創建數據庫同步用戶,并授予REPLICATION SLAVE權限和REPLICATION CLIENT權限,用于主從之間同步數據。
docker exec -it 主庫容器名 /bin/bash # 進入主庫docker
mysql -uroot帳號 -p用戶密碼 # 登錄入mysql
CREATE USER 'slave'@'%' IDENTIFIED BY '123456'; #創建用戶名“slave”,密碼“123456”的數據庫用戶。
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%'; #授予用戶 slave REPLICATION SLAVE權限和REPLICATION CLIENT權限
4.?查看File、Position字段值,并記錄下來
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 617 | | | |
+------------------+----------+--------------+------------------+-------------------+
配置SlaveSlave配置文件修改
docker exec -it 容器名 /bin/bash #
apt-get update
apt-get install -y vim
vim /etc/mysql/my.cnf
[mysqld]
## 設置server_id,注意要唯一
server-id=101
## 開啟二進制日志功能,以備Slave作為其它Slave的Master時使用
log-bin=mysql-slave-bin
## relay_log配置中繼日志
relay_log=edu-mysql-relay-bin
2. 重啟mysql服務跟docker容器
3. 進入Slave數據庫,執行主從同步命令;
change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 617, master_connect_retry=30; # master_host='docker獨立ip' ;
master_user='主庫創建的同步帳號';master_password='同步帳號密碼';master_port=mysql主庫端口;master_log_file='主庫File字段名';master_log_pos= Position字段;master_connect_retry=重連時間
show slave status \G; #查看主從同步狀態
start slave #啟動主從同步功能
SlaveIORunning 和 SlaveSQLRunning 都是Yes,說明主從復制已經開啟。此時可以測試數據同步是否成功。
進階
創建主庫
docker run -itd -p 3308:3306 --name master -v /master/var/mysql:/var/lib/mysql -v /master/conf/:/etc/mysql/ -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
2. 創建從庫
docker run -itd -p 3309:3306 --name slave -v /slave/var/mysql:/var/lib/mysql -v /slave/conf/:/etc/mysql/ -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
注意:因數據庫版本不同,所有些并不會立即啟動,需寫配置文件才可啟動。5.7經測試會立即啟動。
3. 主從配置文件夾中創建配置文件 my.cnf。
#主庫配置如下:
cd /master/conf/
touch my.cnf
vim my.cnf
[mysqld]
lower_case_table_names=1
wait_timeout=30
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_allowed_packet= 1024M
group_concat_max_len = 1024M
thread_cache_size=64
max_connections=160000 #設置最大的連接數
server-id=1001 ##設置server_id,注意要唯一
transaction-isolation = READ-COMMITTED
auto-increment-increment = 1
auto-increment-offset = 1
slave-skip-errors = all #忽略一些錯誤
binlog-ignore-db=mysql
binlog-ignore-db=test1 #不同步給從庫的庫test1
log-bin = mysql-bin #開啟二進制日志功能,以備Slave作為其它Slave的Master時使用
binlog-do-db=test #需要復制給從庫的庫
!includedir /etc/mysql/ #***主要:此路徑是docker內的配置文件放置路徑,也就是剛剛啟動映射的配置文件路徑
# 從庫配置如下:
[mysqld]
lower_case_table_names=1
wait_timeout=30
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_allowed_packet= 1024M
group_concat_max_len = 1024M
thread_cache_size=64
max_connections=10000
server-id=1002
replicate-do-db=test #從庫需要復制的庫
replicate-ignore-db=test1 #從庫需要忽略同步的庫
log-slave-updates #一主多從必寫的配置
log-bin = mysql-bin #開啟二進制日志功能,以備Slave作為其它Slave的Master時使用
auto-increment-increment = 1
auto-increment-offset = 1
slave-skip-errors = all
slave-net-timeout=60 #這是slave60秒超時會重連
!includedir /etc/mysql/
4. 重新啟動主從庫
docker restart master
docker restart slave
5. 接下來主從庫操作可參考入門步驟3,大同。
參考連接
點擊原文前往我的博客查看參考鏈接
- End -
如有幫助到您
掃一掃不迷路
微信新三連
分享、點贊、點在看
👇🏻?👇🏻👇🏻
總結
以上是生活随笔為你收集整理的mysql在线搭建从库_Mysql主从库搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【SQLSERVER】递归查询算法实例
- 下一篇: mysql排序时设置主次_Mysql实现