MySQL 集群是一種高可用性、高性能的數(shù)據(jù)庫解決方案,旨在支持分布式應(yīng)用程序,允許多個 MySQL 實例以集群的方式共同工作,提供數(shù)據(jù)冗余和故障恢復(fù)能力
搭建 Mysql 集群
華為云放行端口 3666 和 3667
1、購買華為云 Flexus X 實例
Flexus云服務(wù)器X實例-華為云 (huaweicloud.com)
2、安裝 docker,并檢查安裝版本(此處我已安裝不做演示)
curl-fsSLhttps://get.docker.com | bash
docker-version
3、拉取 Mysql 鏡像
dockerpull mysql:5.7
4、創(chuàng)建所需目錄,在容器外創(chuàng)建用于存儲日志、數(shù)據(jù)和配置文件的目錄。這些目錄會在容器運行時被掛載,確保數(shù)據(jù)持久化
? /mysql-master/log:用于存放 MySQL 日志文件
? /mysql-master/data:用于存放 MySQL 數(shù)據(jù)庫文件
? /mysql-master/conf:用于存放 MySQL 配置文件
mkdir-p/mysql-master/log
mkdir-p/mysql-master/data
mkdir-p/mysql-master/conf
5、運行 MySQL 容器,使用以下命令運行 MySQL 容器。這里將容器的 3306 端口映射到主機的 3666 端口,并掛載了之前創(chuàng)建的目錄
dockerrun -itd-p3666:3306 --namemysql-master -v/mysql-master/log:/var/log/mysql -v/mysql-master/data:/var/lib/mysql -v/mysql-master/conf:/etc/mysql -eMYSQL_ROOT_PASSWORD=password --privileged=true mysql:5.7
6、檢查是否部署成功 docker ps 查看,有 mysql 說明部署成功
docker ps
?如上如果部署失敗 docker ps 會看不到 mysql,需要查看日志,然后根據(jù)日志給出的報錯提示修改,多半是文件沒有創(chuàng)建,根據(jù)要求創(chuàng)建對應(yīng)文件即可
docker logs mysql-master
7、mysql 配置主節(jié)點文件配置
vim /mysql-master/conf/my.cnf
[mysqld]
server_id=101
binlog-ignore-db=mysql
log-bin=mall-mysql-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
8、從節(jié)點上創(chuàng)建用于 MySQL 從節(jié)點的日志、數(shù)據(jù)和配置文件目錄
mkdir-p/mysql-master/log
mkdir-p/mysql-master/data
mkdir-p/mysql-master/conf
dockerrun -itd-p3666:3306 --namemysql-master -v/mysql-master/log:/var/log/mysql -v/mysql-master/data:/var/lib/mysql -v/mysql-master/conf:/etc/mysql -eMYSQL_ROOT_PASSWORD=password --privileged=true mysql:5.7
9、主節(jié)點上創(chuàng)建用于 MySQL 從節(jié)點的日志、數(shù)據(jù)和配置文件目錄
mkdir-p/mysql-slave/log
mkdir-p/mysql-slave/data
mkdir-p/mysql-slave/conf
dockerrun -itd-p3667:3306 --namemysql-slave -v/mysql-slave/log:/var/log/mysql -v/mysql-slave/data:/var/lib/mysql -v/mysql-slave/conf:/etc/mysql -eMYSQL_ROOT_PASSWORD=password --privileged=true --linkmysql-master:mysql-master mysql:5.7
?端口映射:將宿主機的 3667端口映射到容器的 3306端口。
?數(shù)據(jù)掛載:將日志、數(shù)據(jù)和配置文件目錄掛載到容器內(nèi)部,保證數(shù)據(jù)持久化。
?環(huán)境變量:設(shè)置 MySQL 根用戶的密碼為 password。
?--link:使從節(jié)點能夠連接到主節(jié)點 mysql-master,并將其映射為主機名 mysql-master
10、查看容器狀態(tài)
docker ps
11、mysql 配置主節(jié)點和從節(jié)點配置
?mysql 配置主節(jié)點文件配置
vim/mysql-master/conf/my.cnf
[mysqld]
server_id=101
binlog-ignore-db=mysql
log-bin=mall-mysql-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
character-set-server=utf8
?mysql 配置從節(jié)點文件配置
vim/mysql-slave/conf/my.cnf
[mysqld]
server_id=102
binlog-ignore-db=mysql
log-bin=mall-mysql-slave1-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
relay_log=mall-mysql-relay-bin
log_slave_updates=1
read_only=1
character-set-server=utf8
12、進(jìn)入 mysql 容器,連接到 MySQL 主節(jié)點
dockerexec -itmysql-master bash
mysql-uroot-ppassword-h60.204.147.160 -P3666
mysql: 調(diào)用 MySQL 客戶端。
-uroot: 指定使用 root用戶連接數(shù)據(jù)庫。
-ppassword: 指定 root用戶的密碼為 password(-p后面沒有空格)
-h 123.249.27.118: 指定要連接的主節(jié)點的 IP 地址。
-P 3666: 指定 MySQL 服務(wù)監(jiān)聽的端口號(這里是 3666)
?主服務(wù)器如下進(jìn)行 mysql 操作創(chuàng)建一個新的 MySQL 用戶(slave),并授予其執(zhí)行主從復(fù)制所需的權(quán)限。然后,通過刷新權(quán)限,確保這些更改能立即生效,以便用戶能夠開始使用這些權(quán)限
13、進(jìn)入 mysql 容器,連接到 MySQL 從節(jié)點
dockerexec -itmysql-master bash
mysql-uroot-ppassword-h60.204.147.160 -P3667
?配置主服務(wù)器信息
change master to
master_host='60.204.147.160',
master_user='slave',
master_password='123456',
master_port=3666,
master_log_file='mall-mysql-bin.000001',
master_log_pos=761,
master_connect_retry=30;
startslave ;
?master_host: 指定主服務(wù)器的 IP 地址或主機名。在你的例子中,主服務(wù)器的 IP 地址是 123.249.27.118。
?master_user: 用于連接主服務(wù)器的用戶名。在這里使用的是 slave用戶。
?master_password: 用于連接主服務(wù)器的密碼,這里是 123456。
?master_port: 主服務(wù)器的端口號,默認(rèn)情況下 MySQL 使用 3306,這里使用的是 3666。
?master_log_file: 指定主服務(wù)器的二進(jìn)制日志文件名,用于同步數(shù)據(jù)。這通常是從主服務(wù)器執(zhí)行 SHOW MASTER STATUS;獲取的。
?master_log_pos: 指定在二進(jìn)制日志文件中的位置,表示從哪個位置開始復(fù)制數(shù)據(jù)。這個值也來自于 SHOW MASTER STATUS;。
?master_connect_retry: 當(dāng)從服務(wù)器無法連接到主服務(wù)器時,重試連接的時間間隔(秒)。這里設(shè)置為 30 秒
?執(zhí)行 START SLAVE;命令后,從服務(wù)器將開始與主服務(wù)器的連接,并開始復(fù)制數(shù)據(jù)
14、從服務(wù)器如下進(jìn)行 mysql 操作創(chuàng)建一個新的 MySQL 用戶(slave),并授予其執(zhí)行主從復(fù)制所需的權(quán)限。然后,通過刷新權(quán)限,確保這些更改能立即生效,以便用戶能夠開始使用這些權(quán)限
15、啟動復(fù)制進(jìn)程
STARTSLAVE ;
16、檢查狀態(tài)
Slave_IO_Running
?值為 Yes: 表示從服務(wù)器的 I/O 線程正在運行,并且能夠成功連接到主服務(wù)器,正在接收來自主服務(wù)器的二進(jìn)制日志事件。
?值為 No: 表示 I/O 線程沒有運行,可能由于無法連接到主服務(wù)器或存在其他錯誤。
Slave_SQL_Running
?值為 Yes: 表示從服務(wù)器的 SQL 線程正在運行,能夠成功處理接收到的日志事件并將其應(yīng)用到從數(shù)據(jù)庫中。
?值為 No: 表示 SQL 線程沒有運行,可能是因為處理日志事件時遇到了錯誤或其他原因
如果這兩個狀態(tài)都為 Yes,說明主從復(fù)制配置正常,從服務(wù)器正在有效地接收和執(zhí)行來自主服務(wù)器的更新
SHOW SLAVE STATUSG;
總結(jié)
華為云的 Flexus X 實例,不僅是為了其卓越的性能和穩(wěn)定性,更因為其性價比極高的服務(wù),在搭建 MySQL 集群的過程中,我體驗到了云計算與 Docker 容器技術(shù)的無縫結(jié)合,這使得我的數(shù)據(jù)庫管理和運維變得更加高效,在這個過程中,我深刻體會到持續(xù)學(xué)習(xí)的重要性,如果有志于提升運維技能的小伙伴們,可以考慮一起購買華為云的 Flexus X 實例,共同探討和學(xué)習(xí)更多關(guān)于云計算和容器化的實踐經(jīng)驗,此外,當(dāng)前正值華為云 828 大促,性價比極高的云服務(wù)為我們提供了絕佳的學(xué)習(xí)機會!
華為云828 Flexus X實例
-
云計算
+關(guān)注
關(guān)注
39文章
7855瀏覽量
137750 -
MySQL
+關(guān)注
關(guān)注
1文章
829瀏覽量
26698 -
Docker
+關(guān)注
關(guān)注
0文章
492瀏覽量
11927
發(fā)布評論請先 登錄
相關(guān)推薦
評論