在容器環境搭建mysql備庫

kakaxi9521發表於2022-01-27

使用podman部署Mysql從庫。 Centos linux 8.5 中自帶Podman 安裝包,可直接進行使用。

1. 增加mysql 使用者。

useradd mysql


2.root使用者/u01 目錄下建立 backup、images、 iso、 mysql 目錄。


mkdir -p /u01/{backup,images,iso,mysql}


更改目錄使用者宿主

chown mysql:mysql *


3.建立xxdevslave 的data、 conf 目錄。


mkdir -p /u01/mysql/xxdevslave/{data,conf}


4. 透過podman 匯入image


podman load -i mysql-57-centos7.tar


[mysql@DCF5B1RK images]$ podman images

REPOSITORY                         TAG         IMAGE ID      CREATED      SIZE

docker.io/centos/mysql-57-centos7  latest      f83a2938370c  2 years ago  464 MB


測試是否能建立mysql contrainer

podman run  --name mysql57 -e MYSQL_ROOT_PASSWORD='xxxx_xxxx' -d mysql-57-centos7


[mysql@DCF5B1RK images]$ podman ps 

CONTAINER ID  IMAGE                                     COMMAND     CREATED         STATUS             PORTS       NAMES

34b21dcdb4ef  docker.io/centos/mysql-57-centos7:latest  run-mysqld  22 seconds ago  Up 22 seconds ago              mysql57



5. 為備庫準備my.cnf 檔案。


6. 為xxdevslave 啟動一個容器

podman run --name xxdevslave -p 33061:3306 -v /u01/mysql/xxdevslave/data:/var/lib/mysql/data  -v /u01/mysql/xxdevslave/conf/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=xxxx_xxxx -d mysql-57-centos7


容器正常啟動

[mysql@DCF5B1RK conf]$ podman ps 

CONTAINER ID  IMAGE                                     COMMAND     CREATED         STATUS             PORTS                    NAMES

84e3b86fad85  docker.io/centos/mysql-57-centos7:latest  run-mysqld  12 seconds ago  Up 13 seconds ago  0.0.0.0:33061->3306/tcp  xxdevslave


7. 進入容器並修改root使用者密碼。

[mysql@DCF5B1RK xxdevslave]$ podman exec -it xxdevslave bash

bash-4.2$ 

bash-4.2$ ps -ef | grep mysql 

mysql          1       0  0 02:34 ?        00:00:00 /opt/rh/rh-mysql57/root/usr/libexec/mysqld --defaults-file=/etc/my.cnf

mysql        381       0  0 02:35 pts/0    00:00:00 bash

mysql        392     381  0 02:35 pts/0    00:00:00 ps -ef

mysql        393     381  0 02:35 pts/0    00:00:00 grep mysql

bash-4.2$ 

bash-4.2$ mysql -uroot -p

Enter password: 

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.7.24-log MySQL Community Server (GPL)


Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> alter user root@localhost identified by 'xxxx_xxxx';

Query OK, 0 rows affected (0.00 sec)


mysql> 


8. 使用mysqldump 工具將主庫xxdev的資料匯出並同步到xxdevslave。


time mysqldump -uroot -p --master-data=2 --single-transaction --databases agent  > /var/lib/mysql/mysqldump_database_`date +%Y%m%d`.sql


使用podman cp 命令將xxdev容器中的mysqldump_database_20220121.sql 備份檔案複製到本地檔案系統。


[mysql@DCG5B1R ~]$ podman cp xxdev:/var/lib/mysql/mysqldump_database_20220121.sql /u01/backup/

[mysql@DCG5B1R ~]$ ls 

[mysql@DCG5B1R ~]$ cd /u01

[mysql@DCG5B1R u01]$ cd backup

[mysql@DCG5B1R backup]$ ls -l 

total 62073116

-rw-rw-r-- 1 mysql mysql         842 Jan 20 15:19 my.cnf

-rw-r--r-- 1 mysql mysql 63562865572 Jan 21 11:09 mysqldump_database_20220121.sql

[mysql@DCG5B1R backup]$ 

[mysql@DCG5B1R backup]$ 

[mysql@DCG5B1R backup]$ pwd

/u01/backup

[mysql@DCG5B1R backup]$ 


9. 使用mysqldump 工具將備份檔案匯入到xxdevslave容器的mysql 資料庫中。

[mysql@DCF5B1RK backup]$ podman cp mysqldump_database_20220121.sql xxdevslave:/


mysql -uroot -p < mysqldump_database_20220121.sql


10. 配置主從


create user rep;

GRANT REPLICATION SLAVE ON *.* TO 'rep'@'%' IDENTIFIED BY 'xxxx_xxxx';

grant replication slave on *.* to rep;


change master to master_host='10.18.1.xx',

master_port=33061,

master_user='rep',

master_password='xxxx_xxxx', 

master_log_file='mysql-bin.000047',

master_log_pos=154;



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21374452/viewspace-2854213/,如需轉載,請註明出處,否則將追究法律責任。

相關文章