在CentOS中修改mariadb数据库存储位置
MariaDB数据库通过rpm安装包安装后,数据直接默认存在/root下,但是默认情况此处空间都不大,很容易就被占满
[root@localhost mysql]# df -H 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 54G 54G 37k 100% / -- 此次占满后就再也存不进去数据了 devtmpfs 34G 0 34G 0% /dev tmpfs 34G 87k 34G 1% /dev/shm tmpfs 34G 908M 33G 3% /run tmpfs 34G 0 34G 0% /sys/fs/cgroup /dev/sda2 521M 161M 361M 31% /boot /dev/sda1 210M 9.9M 200M 5% /boot/efi /dev/mapper/centos-home 1.8T 39M 1.8T 1% /home tmpfs 6.8G 17k 6.8G 1% /run/user/42 tmpfs 6.8G 0 6.8G 0% /run/user/0
接下来就想的把数据存在/home下面,首先把数据库服务给停了,然后拷贝数据存储文件夹
[root@localhost home]# cp -rp /var/lib/mysql /home/mysql // 拷贝 [root@localhost home]# ll 总用量 8 drwx------. 15 admin admin 4096 6月 28 2020 admin drwxr-xr-x. 5 mysql mysql 4096 8月 2 10:54 mysql [root@localhost home]# cd mysql [root@localhost mysql]# ll 总用量 116780 -rw-rw----. 1 mysql mysql 16384 8月 2 09:33 aria_log.00000001 -rw-rw----. 1 mysql mysql 52 8月 2 09:33 aria_log_control -rw-rw----. 1 mysql mysql 913 8月 2 09:33 ib_buffer_pool -rw-rw----. 1 mysql mysql 18874368 8月 2 09:33 ibdata1 -rw-rw----. 1 mysql mysql 50331648 8月 2 09:33 ib_logfile0 -rw-rw----. 1 mysql mysql 50331648 8月 2 09:29 ib_logfile1 -rw-rw----. 1 mysql mysql 0 8月 2 09:29 multi-master.info drwx------. 2 mysql mysql 4096 3月 24 09:52 mysql -rw-rw----. 1 mysql mysql 1593 7月 26 10:37 mysql-bin.000001 -rw-rw----. 1 mysql mysql 1040 8月 2 09:11 mysql-bin.000002 -rw-rw----. 1 mysql mysql 38 7月 26 10:38 mysql-bin.index drwx------. 2 mysql mysql 4096 3月 24 09:52 performance_schema drwx------. 2 mysql mysql 28 7月 26 10:35 test
拷贝完成后,修改数据库配置文件:
[root@localhost mysql]# cd /etc/my.cnf.d [root@localhost my.cnf.d]# ls enable_encryption.preset mysql-clients.cnf server.cnf [root@localhost my.cnf.d]# vi server.cnf
[mysqld]
datadir=/home/mysql
保存修改后,尝试重启数据库服务,结果报错了:
[root@localhost mysql]# systemctl start mariadb Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details. [root@localhost mysql]# systemctl status mariadb ● mariadb.service - MariaDB 10.2.39 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/mariadb.service.d └─migrated-from-my.cnf-settings.conf Active: failed (Result: exit-code) since 一 2021-08-02 11:09:58 CST; 12s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Process: 32723 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS --basedir=/usr $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=exited, status=1/FAILURE) Process: 32705 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS) Process: 32699 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Main PID: 32723 (code=exited, status=1/FAILURE) Status: "MariaDB server is down" 8月 02 11:09:57 localhost.localdomain systemd[1]: Starting MariaDB 10.2.39 database server... 8月 02 11:09:58 localhost.localdomain mysqld[32723]: 2021-08-02 11:09:58 140668166133888 [Note] /usr/sbin/mysqld (mysqld 10.2.39-MariaDB) starting as process 32723 ... 8月 02 11:09:58 localhost.localdomain mysqld[32723]: 2021-08-02 11:09:58 140668166133888 [Warning] Can't create test file /home/mysql/localhost.lower-test 8月 02 11:09:58 localhost.localdomain mysqld[32723]: [87B blob data] 8月 02 11:09:58 localhost.localdomain mysqld[32723]: 2021-08-02 11:09:58 140668166133888 [ERROR] Aborting 8月 02 11:09:58 localhost.localdomain systemd[1]: mariadb.service: main process exited, code=exited, status=1/FAILURE 8月 02 11:09:58 localhost.localdomain systemd[1]: Failed to start MariaDB 10.2.39 database server. 8月 02 11:09:58 localhost.localdomain systemd[1]: Unit mariadb.service entered failed state. 8月 02 11:09:58 localhost.localdomain systemd[1]: mariadb.service failed.
根据“Can't create test file /home/mysql/localhost.lower-test”报错信息,度娘了下修改
[root@localhost mysql]# vi /usr/lib/systemd/system/mariadb.service
找到 ProtectHome=true
改为:
ProtectHome=false
保存后,再执行相关命令:
[root@localhost mysql]# systemctl daemon-reload [root@localhost mysql]# systemctl start mariadb Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details. [root@localhost mysql]# systemctl status mairadb ● mairadb.service Loaded: not-found (Reason: No such file or directory) Active: inactive (dead) [root@localhost mysql]# systemctl status mariadb ● mariadb.service - MariaDB 10.2.39 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/mariadb.service.d └─migrated-from-my.cnf-settings.conf Active: failed (Result: exit-code) since 一 2021-08-02 11:29:58 CST; 36s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Process: 33332 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS --basedir=/usr $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=exited, status=1/FAILURE) Process: 33314 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS) Process: 33309 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Main PID: 33332 (code=exited, status=1/FAILURE) Status: "MariaDB server is down" 8月 02 11:29:58 localhost.localdomain mysqld[33332]: 2021-08-02 11:29:58 140384851544192 [ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed. 8月 02 11:29:58 localhost.localdomain mysqld[33332]: 2021-08-02 11:29:58 140384851544192 [Note] Plugin 'FEEDBACK' is disabled. 8月 02 11:29:58 localhost.localdomain mysqld[33332]: 2021-08-02 11:29:58 140384851544192 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded 8月 02 11:29:58 localhost.localdomain mysqld[33332]: 2021-08-02 11:29:58 140384851544192 [ERROR] Unknown/unsupported storage engine: InnoDB 8月 02 11:29:58 localhost.localdomain mysqld[33332]: 2021-08-02 11:29:58 140384851544192 [ERROR] Aborting 8月 02 11:29:58 localhost.localdomain mysqld[33332]: Warning: Memory not freed: 520 8月 02 11:29:58 localhost.localdomain systemd[1]: mariadb.service: main process exited, code=exited, status=1/FAILURE 8月 02 11:29:58 localhost.localdomain systemd[1]: Failed to start MariaDB 10.2.39 database server. 8月 02 11:29:58 localhost.localdomain systemd[1]: Unit mariadb.service entered failed state. 8月 02 11:29:58 localhost.localdomain systemd[1]: mariadb.service failed.
修改setenforce状态,临时值是 0或者直接禁用后再试试,成功了
[root@localhost mysql]# setenforce 0 [root@localhost mysql]# systemctl start mariadb [root@localhost mysql]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 8 Server version: 10.2.39-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases;