最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql主從及遇到的問題解決

 更新時間:2025年01月04日 10:09:20   作者:與民更始  
本文詳細介紹了如何使用Docker配置MySQL主從復制,首先創(chuàng)建了兩個文件夾并分別配置了`my.cnf`文件,通過執(zhí)行腳本啟動容器并配置好主從關系,文中還提到了一些常見問題的解決方法,如配置路徑錯誤導致的沖突和slave的change連接錯誤

mysql主從及遇到問題解決

1.基于mysql 8.0的docker

2.配置mysql的配置

  • 創(chuàng)建master文件夾,并創(chuàng)建my.cnf文件:
[mysqld]
## 設置server_id,注意要在同一局域網(wǎng)內(nèi)唯一
server-id=1
## 開啟binlog
log-bin=mysql-bin
## binlog格式(mixed、statement、row,默認格式是statement)
binlog_format=mixed
  • 創(chuàng)建slaver文件夾,并創(chuàng)建my.cnf文件
[mysqld]
## 設置server_id,注意要唯一
server-id=2
## 可以開啟binlog,以備Slave作為其它Slave的Master時使用
#log-bin=mysql-bin
## relay_log配置中繼日志
relay_log=relay-bin
## 如果需要同步函數(shù)或者存儲過程
log_bin_trust_function_creators=true
## binlog格式(mixed、statement、row,默認格式是statement)
binlog_format=mixed
## 跳過主從復制中遇到的所有錯誤或指定類型的錯誤,避免slave端復制中斷
## 如:1062錯誤是指一些主鍵重復,1032錯誤是因為主從數(shù)據(jù)庫數(shù)據(jù)不一致
slave_skip_errors=1062   ## 跳過主從復制中遇到的錯誤,可配可不配
read-only=1 #1只讀,0讀寫
  • 同級可以創(chuàng)建sh文件
#!/bin/sh
# $0獲取執(zhí)行命令的文件;realpath獲取真實的路徑;dirname獲取該文件的絕對路徑
script_dir=$(dirname "$(realpath "$0")")
docker run -itd --name doyen$1 -p ${2}:3306 -e MYSQL_ROOT_PASSWORD=123456 \
-v ${script_dir}/${1}/my.cnf:/etc/my.cnf \
-v ${script_dir}/${1}/data:/var/lib/mysql \
-v ${script_dir}/${1}/log:/var/log --restart always mysql:8.0
  • 分別執(zhí)行sh:
#啟用master容器,master文件名,3306端口
sh mysql.sh master 3306

#啟用slaver容器,slaver文件名,3307端口
sh mysql.sh master 3307
  • 登錄master容器
#進入容器,如果失敗使用 sh
docker exec -it master bash
#登錄mysql
mysql -uroot -p123456
use mysql;
#可以移除root的所有地區(qū)登錄,只保留能本機登錄
drop user 'root'@'%';
#創(chuàng)建slaver用戶,使用明文密碼連接
create user 'slaver'@'%' identified with mysql_native_password by '123456';
grant replication SLAVE ON *.* TO 'slaver'@'%';
flush privileges;

#查看binlog的數(shù)據(jù),用于slaver的偏移量遷移
show master status;
  • 登錄slaver服容器
#master_log_file和master_log_pos 為master中show展示的數(shù)據(jù)
change master to master_host='master-ip',
                     master_port=3306,
					 master_user='slaver',
					 master_password='123456',
					 master_log_file='mysql-bin.000002',
					 master_log_pos=157;
start SLAVE;
show slave status\G;

主從mysql完成,Slave_IO_RunningSlave_SQL_Running 都為 Yes。

遇到的問題說明

一些博客提示mysql的配置位置不對,導致路徑映射不對,使用默認的配置,引發(fā)serverId都是1,會主從沖突,位置為 /etc/my.cnf,修改配置后需要docker restart。

查詢文件:

docker exec -it container find / -name "my.cnf"

如果slave的change連接master寫錯了,可以執(zhí)行stop slave;reset slave;再重新綁定。

這是重頭開始復制,如果master已經(jīng)運行了一段時間

#master容器:全量dump,--source-data=2表示生成的備份文件中包含 CHANGE MASTER TO 語句
#--single-transaction: 保證備份在一致性點上完成
#--flush-logs: 在備份開始時刷新 MySQL 的二進制日志
#--hex-blob: 處理二進制字段時使用十六進制表示

mysqldump -u root -p --all-databases --source-data=2 --single-transaction --flush-logs --hex-blob > /var/lib/mysql/full-backup.sql

#將master的該文件mv到slaver的映射路徑中,進入slaver容器

mysql -u root -p < full-backup.sql

#執(zhí)行完后再配置binlog同步點,從sql文件中找出偏移量

CHANGE MASTER TO 。。。

#-------------------------------二。數(shù)據(jù)太多,只dump表結(jié)構(gòu)-------
mysqldump -u root -p123456 --no-data --databases your_database > schema-only.sql
mysql -u root -p123456 < schema-only.sql

start slave;

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論

邵东县| 同江市| 民和| 龙泉市| 团风县| 金乡县| 汝城县| 丹江口市| 礼泉县| 镇康县| 星子县| 道真| 诸城市| 确山县| 若尔盖县| 平利县| 西丰县| 沙坪坝区| 北海市| 花莲市| 军事| 九龙坡区| 洛阳市| 汝州市| 安新县| 隆昌县| 黄石市| 东海县| 安塞县| 萨迦县| 博罗县| 湖口县| 乌苏市| 凤城市| 华亭县| 腾冲县| 砀山县| 伽师县| 鹤岗市| 丽江市| 静宁县|