linux mariadb双主配置
使用Master服务器作为时间同步服务器。
server1时间同步设置
cd /etc cp -p chrony.conf chrony.conf-bak vim /etc/chrony.conf #注释掉网络服务器,添加本地时间服务器 #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst server 192.168.6.16 iburst #允许地址段访问 allow 192.168.6.0/24 #即使server 指令中时间服务器不可用,也允许将本地时间作为标准时间授予其他客户端 local stratum 10 #重启时间服务 systemctl restart chronyd systemctl enable chronyd systemctl status chronyd
server2时间同步设置
cd /etc cp -p chrony.conf chrony.conf-bak vim /etc/chrony.conf #注释掉网络服务器,添加本地时间服务器 #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst server 192.168.37.101 iburst #重启时间服务 systemctl restart chronyd systemctl enable chronyd systemctl status chronyd 检查时间同步情况 timedatectl … NTP synchronized: yes … #NTP sychronized 为 yes,证明时间同步正常。
安装mariadb
yum -y install mariadb-server 启动服务 systemctl start mariadb systemctl enable mariadb systemctl status mariadb
修改数据文件保存目录
datadir mkdir -p /data/mysql chown -R mysql:mysql /data/mysql cp -p /etc/my.cnf /etc/my.cnf-bak vim /etc/my.cnf datadir=/data/mysql 重启mariadb服务 systemctl restart mariadb
设置管理员密码
mysql -u root -p ##敲回车进入mariadb MariaDB [(none)]>set password=password(‘123456’); MariaDB [(none)]>quit; 重启mariadb服务 systemctl restart mariadb
server1配置
在/etc/mysql/my.cnf下增加 [mysqld] server-id=1###指定server-id server-id不能相同 log_bin=master-bin 指定二进制文件 binlog-ignore-db=mysql #不复制的数据库 binlog-ignore-db=information_schema #不复制的数据库 binlog-ignore-db=performance_schema #不复制的数据库 binlog-ignore-db=test #不复制的数据库 innodb_flush_log_at_trx_commit=1 ##我们每次事务的结束都会触发Log Thread 将log buffer中的数据写入文件并通知文件系统同步文件。这个设置是最安全的设置,能够保证不论是MySQL Crash 还是OS Crash或者是主机断电都不会丢失任何已经提交的数据。
server2配置
###上面有解释,2就不写了 在/etc/mysql/my.cnf下增加 [mysqld] server-id=2 log_bin=master-bin binlog-ignore-db=mysql binlog-ignore-db=information_schema binlog-ignore-db=performance_schema binlog-ignore-db=test innodb_flush_log_at_trx_commit=1
创建同步账户
server1
grant replication slave on . to ‘requser’@‘server2 ip’ identified by ‘requser’; ##新建repuser用户(密码:repuser),server2可以登录server1mariadb,对当前服务器任何数据库的 任何表进行复制操作。 FLUSH PRIVILEGES; ##刷新权限表,使创建的用户repuser 权限生效
server2
grant replication slave on . to ‘requser’@‘server1 ip’ identified by ‘requser’; ##新建repuser用户(密码:repuser),server1可以登录server2mariadb,对当前服务器任何数据库的 任何表进行复制操作。 FLUSH PRIVILEGES; ##刷新权限表,使创建的用户repuser 权限生效
可以顺便在另一台服务器测试能不能登录,如果不能,把 bind-address 那行注释掉即可. $server2 mysql -urepuser -prepuser -hserver1ip
查看maser状态
server1
MariaDB [mysql]> show master status;
server2
MariaDB [mysql]> show master status;
设置server2器复制参数项
MariaDB [mysql]>change master to master _host = ‘server1ip’ ,master_port=3306,master_user=‘repuser’ ,master_password=‘repuser’,master_log_file=‘master-bin.000006’,master_log_pos=332; 注意!!!master-bin.000006,332为在server1数据库执行show master status;语句查询到的内容 [mysql]> START SLAVE; ##启用主从同步功能(启动I/O 线程和SQL线程)
###同时启动I/O 线程和SQL线程( I/O线程从主库读取bin log,并存储到relay log中继日志文件中。SQL线程读取中继日志,解析后,在从库重放。)
设置server1器复制参数项
MariaDB [mysql]>change master to master _host = ‘server1ip’ ,master_port=3306,master_user=‘repuser’ ,master_password=‘repuser’,master_log_file='master-bin.000007‘,master_log_pos=245; 注意!!!master-bin.000007,245为在server2数据库执行show master status;语句查询到的内容 [mysql]> START SLAVE; ##启用主从同步功能(启动I/O 线程和SQL线程)
完毕之后,分别执行
MariaDB [mysql]> SHOW SLAVE STATUS\G
server1
server2
如出现以下两项,则说明配置成功! Slave_IO_Running: yes Slave_SQL_Running: yes
|