如何在Centos7.4中修改yum安装的mariadb主-主-主集群datadir路径

1.查询当前数据库存储路径
# mysql -uroot -p
MariaDB [(none)]> show variables like ‘datadir%’;
#其中datadir项就是现存储的路径
#退出数据库登录状态
MariaDB [(none)]> exit;
2.停止数据库
# systemctl stop mariadb
3.新建mariadb新存储的路径文件夹
# mkdir -p /home/mysql/mysqldata
# mkdir -p /home/mysql/mysqllog/binlog
4.进入home目录,给新的路径文件夹mysql用户权限
# cd /home
# chown -R mysql:mysql mysql
# chmod 755 -R mysql
5.修改mysql服务启动脚本中的datadir路径
默认为 datadir=/var/lib/mysql 注释掉,更换为 datadir=/home/mysql/mysqldata
如果还有相同的/var/lib/mysql路径,同样修改为/home/mysql/mysqldata
# vi /etc/init.d/mysql
6.如果还是报错,可以偿试下,修改以下两个文件的参数ProtectSystem和ProtectHome为false
# vi /etc/systemd/system/multi-user.target.wants/mariadb.service
# vi /usr/lib/systemd/system/find
# vi /usr/share/mysql/systemd/mariadb.service
把ProtectSystem=full改成ProtectSystem=false
把ProtectHome=true改成ProtectHome=false
再执行下面这一句
# systemctl daemon-reload
7.修改/etc/my.cnf.d/server.cnf把datadir,socket和log-bin参数路径
# vi /etc/my.cnf.d/server.cnf
[mysqld]
port        = 3306
datadir = /home/mysql/mysqldata
socket =   /var/lib/mysql/mysql.sock
log-bin = /home/mysql/mysqllog/binlog/mysql-bin
#完整server.cnf配置文件如下所示:
[mysqld]
port        = 3306
datadir =  /home/mysql/mysqldata
socket =   /var/lib/mysql/mysql.sock
log-bin = /home/mysql/mysqllog/binlog/mysql-bin
collation-server = utf8_general_ci
init-connect=’SET NAMES utf8′
character-set-server = utf8
open_files_limit = 65535
log_bin_trust_function_creators = 1
skip-external-locking
back_log=750
skip-name-resolve
event_scheduler=1
lower_case_table_names = 1
innodb-defragment=1
query_cache_limit = 256K
query_cache_min_res_unit = 2k
performance_schema=0
net_read_timeout=30
net_write_timeout=60
key_buffer_size = 384M
max_allowed_packet = 10M
table_open_cache = 512
sort_buffer_size = 6M
read_buffer_size = 16M
read_rnd_buffer_size = 16M
expire_logs_days=3
myisam_sort_buffer_size = 16M
thread_cache_size = 32
join_buffer_size = 4M
bulk_insert_buffer_size = 16M
delay_key_write=ON
delayed_insert_limit=4000
delayed_insert_timeout=60
delayed_queue_size=4000
tmp_table_size=128M
max_heap_table_size=128M
max_connections=3000
max_connect_errors=30
interactive_timeout=600
wait_timeout=60
aria_pagecache_buffer_size=32M
#slow_query_log
long_query_time = 0.1
log_slow_verbosity=query_plan
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
query_cache_type=0
innodb_file_per_table=1
innodb_fast_shutdown=0
innodb_buffer_pool_instances = 4
innodb_buffer_pool_size = 132000M
innodb_log_file_size = 100M
innodb_log_files_in_group = 3
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 50
innodb_rollback_on_timeout = on
innodb_flush_method=O_DIRECT
transaction-isolation=READ-COMMITTED
innodb_thread_concurrency=48
innodb_io_capacity=800
innodb_purge_threads=1
innodb_open_files=65535
innodb_read_io_threads = 8
innodb_write_io_threads = 12
innodb_stats_on_metadata = 0
thread_handling=pool-of-threads
thread_pool_oversubscribe=30
thread_pool_size=32
thread_pool_idle_timeout=60
thread_pool_max_threads=1000
[mysqldump]
quick
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 12M
read_buffer = 6M
write_buffer = 2M
[isamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
8.安全模式启动数据库后生成索引文件
执行到第6步,如果直接运行systemctl start mariadb命令,会报错:提示找不到mysql-bin.index文件;那是 修改了log-bin参数路径,由于权限问题,
执行下面命令:即用安全模式启动数据库后就会在/home/mysql/mysqllog/binlog/mysql-bin下生成索引文件
# /usr/bin/mysqld_safe  –user=mysql &
9.停掉mysql进程后
# pkill -u mysql
# ps -ef | grep mysql
# kill -9 mysql进程
9.复制/var/lib/mysql/* 到 /home/mysql/mysqldata下
# cd  /home/mysql/mysqldata
# rm -rf  *
# cp -rf /var/lib/mysql/* /home/mysql/mysqldata
# cd /home
# chown -R mysql:mysql mysql
# chmod -R 750 mysql
注意:原/var/lib/mysql数据文件夹还是保留,因为要用到socket=/var/lib/mysql/mysql.sock
10.重启mariadb服务
# systemctl  start  mariadb
11.打开另外一个节点,进入mysql当前控制台
# mysql -uroot -p123456
MariaDB [(none)]> SET GLOBAL wsrep_provider_options=’pc.bootstrap=YES’;
MariaDB [(none)]> show status like ‘wsrep%’;
12.再次重启mariadb服务
# systemctl  restart  mariadb
13.打开另外一个窗口,用来打印启动信息
# tail -f /var/log/messages
14.确认datadir是否改变
# mysql -uroot -p
MariaDB [(none)]> show variables like ‘datadir%’;
#其中datadir项就是现存储的路径
15.退出数据库登录状态
MariaDB [(none)]> exit;