docker安裝mysql8(單機(jī)和主從復(fù)制)

一、服務(wù)實(shí)例安裝

1.1 查找鏡像

docker search mysql

或者去倉(cāng)庫(kù)找

https://hub.docker.com/_/mysql?tab=tags

1.2 下載鏡像

docker pull mysql:8.0.29

選擇 docker.io/library/mysql:8.0.29

1.3 配置文件my.cnf

單機(jī)的配置文件

[mysql]

default-character-set=?utf8mb4?

[mysqld]

port=3306

authentication_policy=mysql_native_password

主從復(fù)制時(shí)的主配置文件

[mysqld_safe]

[mysqldump]

quick

[mysql]

no-auto-rehash

default-character-set= utf8mb4?

[client]

[mysqld]

default_authentication_plugin=mysql_native_password

port=3306

user=mysql

character_set_server= utf8mb4?

lower_case_table_names = 1

default_storage_engine = InnoDB

wait_timeout=31536000

interactive_timeout=31536000

max_connections=5000

## 設(shè)置server_id,同一局域網(wǎng)中需要唯一

server_id=1

## 指定不需要同步的數(shù)據(jù)庫(kù)名稱(chēng)

binlog-ignore-db=mysql?

## 開(kāi)啟二進(jìn)制日志功能

log-bin=mysql-bin?

## 設(shè)置二進(jìn)制日志使用內(nèi)存大小(事務(wù))

binlog_cache_size=5M?

## 設(shè)置使用的二進(jìn)制日志格式(mixed,statement,row)

binlog_format=mixed?

## 二進(jìn)制日志過(guò)期清理時(shí)間。

binlog_expire_logs_seconds=600

## 二進(jìn)制日志最大的大小,默認(rèn)1G,最大1G

max_binlog_size=1G

## 跳過(guò)主從復(fù)制中遇到的所有錯(cuò)誤或指定類(lèi)型的錯(cuò)誤,避免slave端復(fù)制中斷。

## 如:1062錯(cuò)誤是指一些主鍵重復(fù),1032錯(cuò)誤是因?yàn)橹鲝臄?shù)據(jù)庫(kù)數(shù)據(jù)不一致

slave_skip_errors=1062

主從復(fù)制時(shí)的從配置文件

[mysqld_safe]

[mysqldump]

quick

[mysql]

no-auto-rehash

default-character-set= utf8mb4?

[client]

[mysqld]

default_authentication_plugin=mysql_native_password

port=3306

user=mysql

character_set_server= utf8mb4?

lower_case_table_names = 1

default_storage_engine = InnoDB

wait_timeout=31536000

interactive_timeout=31536000

max_connections=5000

## 設(shè)置server_id,同一局域網(wǎng)中需要唯一

server_id=2

## slave設(shè)置為只讀(具有super權(quán)限的用戶除外)

read_only=1


1.4 掛載配置啟動(dòng)

docker run \

????-p 3306:3306 \

????-v 配置文件:/etc/mysql/conf.d/my.cnf \

????-v 數(shù)據(jù)目錄:/var/lib/mysql \

? ? -v 日志目錄:/var/log/mysql \

? ? -e TZ=Asia/Shanghai \

? ? -e MYSQL_ROOT_PASSWORD=密碼

? ??--privileged=true \

? ? -d 鏡像ID

二、主從復(fù)制配置

2.1 主配置

進(jìn)入命令行,創(chuàng)建主從同步的用戶和密碼,并授權(quán)

CREATE USER 'slave'@'%' IDENTIFIED BY '密碼';

GRANT?REPLICATION?SLAVE?ON *.*?TO?'slave'@'%';

flush privileges;

查看數(shù)據(jù)狀態(tài),獲取File和Postion

show master status;

2.2 從配置

進(jìn)入命令行

change master to master_host='主IP',master_user='slave',master_password='同步用戶的密碼',master_port=主端口,master_log_file='主File',master_log_pos=主Postion,master_connect_retry=30;

字段解釋

master_host:主數(shù)據(jù)庫(kù)的IP地址;

master_port:主數(shù)據(jù)庫(kù)的運(yùn)行端口;

master_user:在主數(shù)據(jù)庫(kù)創(chuàng)建的用于同步數(shù)據(jù)的用戶賬號(hào);

master_password:在主數(shù)據(jù)庫(kù)創(chuàng)建的用于同步數(shù)據(jù)的用戶密碼;

master_log_file:指定從數(shù)據(jù)庫(kù)要復(fù)制數(shù)據(jù)的日志文件,通過(guò)查看主數(shù)據(jù)的狀態(tài),獲取File參數(shù);

master_log_pos:指定從數(shù)據(jù)庫(kù)從哪個(gè)位置開(kāi)始復(fù)制數(shù)據(jù),通過(guò)查看主數(shù)據(jù)的狀態(tài),獲取Position參數(shù);

master_connect_retry:連接失敗重試的時(shí)間間隔,單位為秒。

開(kāi)啟同步

start slave;

查看主從同步狀態(tài)

show slave status \G

Slave_IO_Running和 Slave_SQL_Running都為yes的時(shí)候表示成功。

2.3 主從測(cè)試

進(jìn)入主命令行,創(chuàng)建數(shù)據(jù)庫(kù)

create database 數(shù)據(jù)庫(kù)名稱(chēng);

show databases;

進(jìn)入從命令行,查看數(shù)據(jù)庫(kù)

show databases;

從庫(kù)也有新建的庫(kù),表示主從復(fù)制配置成功

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容