在外挂硬盘上创建MariaDB临时实例操作备忘

有这样一个需求:需要一个数据库用来保存备份数据,但是不出意外的话平时并不需要提供查询服务。备份硬盘如果和服务器一起长期通电,会增加故障概率减少实际使用寿命,因此平时此硬盘并不挂载也不通电。

为满足这样的需求,我尝试为MariaDB创建临时实例,挂载硬盘后就启动实例,完成备份后再停掉实例再卸载硬盘。

一 首先挂载硬盘到/u目录,sdx1代表硬盘,在我的服务器上实际是sdc1

mount /dev/sdc1 /u

二 然后创建实例所需的初始化文件

mysql_install_db  --datadir=/u/mysql --user=mysql --force

--force参数是强制创建,如果不加这个参数会报一个错误

Neither host 'localhost.localdomain' nor 'localhost' could be looked up with
'/usr/libexec/resolveip'
Please configure the 'hostname' command to return a correct
hostname.

创建完成后确认一下,/u/mysql会有一堆文件

ls -la /u/mysql
总用量 28704
drwx------ 5 mysql root       176 11月 25 11:48 .
drwxr-xr-x 3 root  root        19 11月 25 11:15 ..
-rw-rw---- 1 mysql mysql    16384 11月 25 11:48 aria_log.00000001
-rw-rw---- 1 mysql mysql       52 11月 25 11:48 aria_log_control
-rw-rw---- 1 mysql mysql 18874368 11月 25 11:48 ibdata1
-rw-rw---- 1 mysql mysql  5242880 11月 25 11:48 ib_logfile0
-rw-rw---- 1 mysql mysql  5242880 11月 25 11:26 ib_logfile1
drwx------ 2 mysql root      4096 11月 25 11:15 mysql
-rw-rw---- 1 mysql mysql     2303 11月 25 11:48 mysql.log
drwx------ 2 mysql mysql     4096 11月 25 11:15 performance_schema
drwx------ 2 mysql root         6 11月 25 11:15 test

三 为新实例创建启动配置文件

新建文件/etc/my_multi.cnf

内容是:

[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user = root
 
[mysqld2]
socket = /u/mysql/mysql.sock
port = 3307
pid-file = /u/mysql/mysql.pid
datadir = /u/mysql
log = /u/mysql/mysql.log
user = mysql

至此准备工作已经完成。

实际备份工作所需的脚本需要这样写:

#挂载硬盘
mount /dev/sdc1 /u

#启动实例
mysqld_multi --defaults-extra-file=/etc/my_multi.cnf start 2

#执行真正的备份工作,略过
#...

#停止实例
mysqld_multi --defaults-extra-file=/etc/my_multi.cnf stop 2

#卸载硬盘
umount /u





扫码关注我的公众号