1.安装相关软件包
yum install rsync gcc ntp make -y
2.添加mysql用户
[root@RS1 ~]# useradd -s /bin/nologin mysql -M -r
3.查看mysql用户
[root@RS1 ~]# id mysql uid=1005(mysql) gid=1005(mysql) 组=1005(mysql)
四、下载安装MariaDB
1.搭建环境相关软件包
mariadb-10.5.19-linux-systemd-x86_64.tar.gz和openssl-1.0.1e.tar.gz
下载链接: https://pan.baidu.com/s/1bfb6h7XqgDjexrsQLgG1rQ
提取码:aa1h
2.解压及软连接设置
#解压到/opt目录
[root@RS1 ~]# tar -xvf mariadb-10.5.19-linux-systemd-x86_64.tar.gz -C /opt
#在/usr/local目录下创建mysql软连接指向mariadb解压目录
[root@RS1 ~]# cd /usr/local
[root@RS1 ~]# ln -s /opt/mariadb-10.5.19-linux-systemd-x86_64 mysql
[root@RS1 ~]# chown root.root -R mysql
五、SSH登录验证同步
1.配置主机名
[root@RS1 ~]# vim /etc/hosts
172.16.1.15 RS1
172.16.1.16 RS2
172.16.1.17 RS3
2.SSH免密登录
ssh-keygen (3台机器都需要操作)
ssh-copy-id -i ~/.ssh/id_rsa.pub RS2 (只需要在第一台操作)
ssh-copy-id -i ~/.ssh/id_rsa.pub RS3 (只需要在第一台操作)
3.验证登录
ssh root@RS2
ssh root@RS3
六、更新PATH环境
[root@RS1 ~]# echo "PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh
[root@RS1 ~]# source /etc/profile.d/mysql.sh
七、初始化数据库
[root@RS1 ~]# mkdir /data/mysql -p
[root@RS1 ~]# chown -R mysql.mysql /data/mysql
[root@RS1 ~]# cd /usr/local/mysql/
[root@RS1 mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
[root@RS1 mysql]# ll /data/mysql/
八、修改/etc/my.cnf配置文件
1. 创建两个目录存放log和pid
[root@RS1 ~] mkdir /data/mysql/{log,pid}
[root@RS1 ~] chown mysql.mysql -R /data/mysql
2.修改配置文件/etc/my.cnf
[root@RS1 ~]# vim /etc/my.cnf
----手动修改数据存放及socket存放位置----
datadir=/data/mysql socket=/data/mysql/mysql.sock #socket=/var/lib/mysql/mysql.sock
----手动添加日志格式设置为ROW----
binlog_format='ROW'
----手动修改日志和pid进程存放位置----
log-error=/data/mysql/log/mariadb.log pid-file=/data/mysql/pid/mariadb.pid
pid-file=/data/mysql/pid/mariadb.pid
3.添加启动mariadb服务
[root@RS1 mysql]# cp support-files/systemd/mariadb.service /lib/systemd/system/
[root@RS1 mysql]# cp support-files/systemd/mariadb.service /usr/lib/systemd/system/mariadb.service
[root@RS1 mysql]# ln -s /data/mysql/mysql.sock /tmp/mysql.sock
[root@RS1 mysql]# systemclt daemon-reload
[root@RS1 mysql]# systemctl start mariadb
4.设置root密码
/usr/local/mysql/bin/mysql_secure_installation
5.禁用firewalld和selinux
systemctl disable firewalld
sed -i 's#SELINUX=enforcing#SELINUX=disable#g' /etc/selinux/config
6.设置任意登录权限密码
[root@RS1 ~]# mysql -uroot -p123456
MariaDB [(none)]> GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRVILEGES;
7.客户端测试连接
九、集群配置
1./etc/my.cnf末行添加配置
[root@RS1 ~]# vim /etc/my.cnf
# ----手动添加galera配置----
[galera]
wsrep_on=ON
wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so
wsrep_node_name='galera1'
wsrep_node_address='172.16.1.15'
wsrep_cluster_name='galera-cluster'
wsrep_cluster_address="gcomm://172.16.1.15,172.16.1.16,172.16.1.17"
wsrep_provider_options="gcache.size=200M; gcache.page_size=200M"
wsrep_slave_threads=1
innodb_flush_log_at_trx_commit=2
innodb_buffer_pool_size=10240M
wsrep_sst_method=rsync
2.RS2和RS3主机配置
参照RS1配置,设置主机名,安装mariadb,galera配置
3.启动集群
[root@RS1 ~]# galera_new_cluster
[root@RS1 ~]# systemctl enable mariadb
# 在RS2和RS3执行如下命令
systemctl enable --now mariadb
#查看集群数量
[root@RS1 ~]# mysql -uroot -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
Enter password:
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
# 在RS1上创建一个测试数据库
mysql -e "create database galera_test character set utf8 collate utf8_general_ci;"
# 在RS2上查看发现数据库已经同步了
[root@RS2 openssl-1.0.1e]# mysql -e "show databases;"
+--------------------+
| Database |
+--------------------+
| galera_test |
| information_schema |
| log |
| mason |
| mysql |
| performance_schema |
| pid |
| test |
+--------------------+
十、附录
安装报错处理
:: [ERROR] WSREP: wsrep_load(): dlopen(): libssl.so.: cannot open shared object file: No such file or directory :: [ERROR] WSREP: wsrep_load(/app/mariadb-galera-10.0.-linux/lib/galera/libgalera_smm.so) failed: Invalid argument (). Reverting to no provider.
需要安装openssl-1.0.1
cd /usr/local/mysql/lib
# 查看下类库,如果下面两个指向NOT FOUND,安装openssl-1.0.1e.tar.gz
[root@RS1 lib]# ldd ./libgalera_smm.so
libcrypto.so.1.0.0 => /lib64/libcrypto.so.1.0.0 (0x00007fc9ce1c6000)
libssl.so.1.0.0 => /lib64/libssl.so.1.0.0 (0x00007fc9ce5aa000)
# 安装openssl-1.0.1
tar -xf /opt/openssl-1.0.1e.tar.gz /opt/
yum install gcc -y
cd /opt/openssl-1.0.1e
./config shared zlib-dynamic
make
copy libcrypto.so.1.0.0 /lib64
copy libssl.so.1.0.0 /lib64
chown -R mysql:mysql /xjxt/data