前言
在日常学习以及工作中,为了更方便的测试多个数据库版本之间的功能差异,我们会装不同版本的实例,通常使用二进制安装的大致步骤如下:
- 创建相关目录
- 初始化 MySQL
- 启动 MySQL
- 如果有配置主从的需求,还需要额外的命令
整个配置过程如果通过几条命令完成,会大大减少我们的工作量。这里介绍 dbdeployer 工具,它有如下优点:
- 工具安装方便,可以迅速安装和使用不同版本的数据库。
- 配置主从,MGR 集群非常方便,只通过一条命令即可。
- 提供了多个脚本,如快速启停 MySQL,解析 binlog等。
如何安装
1.创建相关目录
(base) [root@rudonx ~]# mkdir -p sandboxes/mysql_binary/
(base) [root@rudonx ~]# mkdir -p sandboxes/mysql_home
2.安装步骤
wget https://github.com/datacharmer/dbdeployer/releases/download/v1.64.0/dbdeployer-1.64.0.linux.tar.gz
tar -xvf dbdeployer-1.64.0.linux.tar.gz
mv dbdeployer-1.64.0.linux /usr/bin/dbdeployer
3.查看安装的版本
(base) [root@ip-10-0-0-22 ~]# dbdeployer --version
dbdeployer version 1.64.0
4.启动并初始化 dbdeployer
受限于国内网络等原因,这里请耐心等待
(base) [root@ip-10-0-0-22 ~]# dbdeployer init --sandbox-binary sandboxes/mysql_binary --sandbox-home sandboxes/mysql_home
常规命令
1. 查看支持的 MySQL 版本
(base) [root@ip-10-0-0-22 msb_5_6_23]# dbdeployer downloads list
2. 选择自动下载指定的版本
(base) [root@ip-10-0-0-22 ~]# dbdeployer downloads get-unpack mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
3.支持将已经下载好的二进制安装包导入到 dbdeployer
如果上述安装包中没有您需要的,您可以从 MySQL 官网上进行下载,然后导入即可
(base) [root@ip-10-0-0-22 ~]# dbdeployer unpack /home/ec2-user/mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz
4. 检查 dbdeployer的已安装/可用的tarball二进制软件包列表
(base) [root@ip-10-0-0-22 msb_5_6_23]# dbdeployer versions
Basedir: /root/sandboxes/mysql_binary
5.6.23 8.0.21 8.0.27
5. 部署单机版的 MySQL
(base) [root@ip-10-0-0-22 mysql_binary]# dbdeployer deploy single 5.6.23
可用的选项如下:
- multiple 创建多个独立的 MySQL
- replication 创建复制环境的 MySQL
- single 创建单节点的 MySQL
部署三个相互独立的 MySQL 实例,命令如下:
dbdeployer deploy multiple -n 3 8.0.27
5. 创建 一主一从架构,并开启 GTID
(base) [root@ip-10-0-0-22 ~]# dbdeployer deploy replication 8.0.27 -n 2 --gtid
Installing and starting master
. sandbox server started
Installing and starting slave1
. sandbox server started
$HOME/sandboxes/mysql_home/rsandbox_8_0_27/initialize_slaves
initializing slave 1
Replication directory installed in $HOME/sandboxes/mysql_home/rsandbox_8_0_27
run 'dbdeployer usage multiple' for basic instructions'
-n 是代表数据库的总的节点数,默认是3 ,也就是一主两从。如果需要创建一主一从并且开启GTID,设置 -n 2 加上 gtid 参数即可实现。
6. 创建 MGR 集群
如果想创建 MGR 集群,命令如下:
dbdeployer deploy --topology=group replication 8.0.27
常用工具/脚本
常用的工具/脚本有如下几类
- use:登录 MySQL 实例
- show_log:查看 错误日志,general log
- show_binlog & show_relaylog:解析binlog 和 relay log
- start & stop 启停 MySQL 实例
- wipe_and_restart:清除数据并重新启动
下面我们介绍下常用的脚本如何使用
1. 登录 MySQL
(base) [root@ip-10-0-0-22 msb_8_0_27]# ./use
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 8.0.27 MySQL Community Server - GPL
2. 解析binlog
(base) [root@ip-10-0-0-22 msb_8_0_27]# ./show_binlog 000001
# at 366
#220314 6:07:14 server id 1 end_log_pos 406 CRC32 0xc29c436a Write_rows: table id 88 flags: STMT_END_F
BINLOG '
ktsuYhMBAAAANgAAAG4BAAAAAFgAAAAAAAEABnJ1ZG9ueAAGcnVkb254AAEDAAEBAQDQWGqd
ktsuYh4BAAAAKAAAAJYBAAAAAFgAAAAAAAEAAgAB/wACAAAAakOcwg==
'/*!*/;
### INSERT INTO `rudonx`.`rudonx`
### SET
### @1=2
# at 406
#220314 6:07:14 server id 1 end_log_pos 437 CRC32 0x88a0c80e Xid = 11
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
3. 查看错误日志
(base) [root@ip-10-0-0-22 msb_8_0_27]# ./show_log err
2022-03-14T05:47:04.087577Z 0 [ERROR] [MY-010119] [Server] Aborting
2022-03-14T05:47:05.508114Z 0 [System] [MY-010910] [Server] /root/sandboxes/mysql_binary/8.0.27/bin/mysqld: Shutdown complete (mysqld 8.0.27) MySQL Community Server - GPL.
2022-03-14T05:50:34.027676Z 0 [System] [MY-010116] [Server] /root/sandboxes/mysql_binary/8.0.27/bin/mysqld (mysqld 8.0.27) starting as process 16672
2022-03-14T05:50:34.038321Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
总结
从上面可以看出,对于 MySQL 的安装,部署 以及日常的使用还是非常方便的。同时 dbdeployer 的功能还是非常丰富的,其他更多命令的支持,建议您参考文档。
参考文档
[1] https://github.com/datacharmer/dbdeployer/releases
[2] https://github.com/datacharmer/dbdeployer/wiki/main-operations
如果您有其他问题,欢迎您联系火山引擎技术支持服务