首页 > 数据库 > MySQL > 在容器环境搭建mysql备库
使用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博客 ” ,链接:https://blog.itpub.net/21374452/viewspace-2854213/ ,如需转载,请注明出处,否则将追究法律责任。