在容器环境搭建mysql备库

来源:这里教程网 时间:2026-03-01 16:26:15 作者:

使用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;

相关推荐