maradb 双主配置

男儿欲遂平生志,五经勤向窗前读。这篇文章主要讲述maradb 双主配置相关的知识,希望能为你提供帮助。
[TOC]
一、服务器环境

IP
用途
服务器版本
软件版本
10.224.216.121
master A
centos 7.4
mariadb 10.4.11
10.224.216.122
master B
centos 7.4
mariadb 10.4.11
10.224.216.123
VIP




三、安装mysql1、修改环境变量
sed -i $ a export PATH=/data/zabbix/mysql/bin:\\$PATH /etc/profile
source /etc/profile

2、检查mysql
$ mysql -V
mysqlVer 15.1 Distrib 10.4.11-MariaDB, for Linux (x86_64) using readline 5.1

3、配置启动文件1、配置init启动
cp /data/zabbix/mysql/support-files/mysql.server /etc/init.d/mysqld

  • 启动测试
```bash service mysqld start service mysqld stop /etc/init.d/mysqld restart ```
2、配置systemctl启动 到官网上把systemd文件复制下来
cat > /etc/systemd/system/mysqld.service < < EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/data/zabbix/mysql/bin/mysqld_safe --defaults-file=/data/zabbix/mysql/etc/my.cnf
LimitNOFILE=5000
EOF

  • 测试启动
```bash ps -ef|grep mysql netstat -naltp|grep 3366 ```
四、master A 配置2、配置my.cnf文件
cat > /data/zabbix/mysql/etc/my.cnf < < EOF
[mysqld]
port=3366
user=mysql
server_id=20
binlog_format=ROW
slow_query_log=ON
relay_log_purge=OFF
log_slave_updates=ON
skip_name_resolve=ON
innodb_file_per_table=ON
table_open_cache=64
key_buffer_size=16M
max_allowed_packet=1M
net_buffer_length=8K
sort_buffer_size=512K
read_buffer_size=256K
read_rnd_buffer_size=512K
character-set-server=utf8mb4
init_connect=SET NAMES utf8mb4
collation-server=utf8mb4_general_ci
basedir=/data/zabbix/mysql
datadir=/data/zabbix/mysql/data
log_bin=/data/zabbix/mysql/logs/bin_log
socket=/data/zabbix/mysql/tmp/mysql.sock
log_error=/data/zabbix/mysql/logs/error.log
relay_log=/data/zabbix/mysql/logs/mysql_relaylog
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
relay_log_index=/data/zabbix/mysql/logs/mysql_relaylog

[mysql]
default-character-set = utf8mb4
socket=/data/zabbix/mysql/tmp/mysql.sock

[client]
port=3366
default-character-set = utf8mb4
socket=/data/zabbix/mysql/tmp/mysql.sock

EOF

3、启动mariadb
systemctl start mysqld

给root创建pwd
mysqladmin -uroot password Nokia!23+

4、创建zabbix账号并授权
mysql -uroot -pNokia!23+ -e "grant replication slave on *.* to zabbix@10.224.216.% identified by Nokia!23=; flush privileges; "

5、查看zabbix账号
mysql -uroot -pNokia!23+ -e "select User,Host,authentication_string from mysql.user where User=zabbix; " -S /data/zabbix/mysql/tmp/mysql.sock
+------+-------------+-------------------------------------------+
| User | Host| authentication_string|
+------+-------------+-------------------------------------------+
| bak| 10.224.216.0.% | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------+-------------+-------------------------------------------+

6、数据库备份
如果数据库有数据就备份数据库,然后到另一台上去还原库
mysqldump -uroot -pNokia!23+ -A --master-data=https://www.songbingjia.com/android/2 --single-transaction -R -E --triggers -S /data/zabbix/mysql/tmp/mysql.sock > /tmp/master.sql

7、拷贝备份数据A到B
scp /tmp/master.sql root@10.224.216.122:/tmp/

  • --master-data选项的作用就是将二进制的信息写入到输出文件中,在这里是写入到备份的sql文件中。
  • --master-data选项将二进制日志的位置和文件名写入到输出中。该选项要求有RELOAD权限,并且必须启用二进制日志。
- 如果该选项值等于1,位置和文件名被写入CHANGE MASTER语句形式的转储输出,如果你使用该SQL转储主服务器以设置从服务器,从服务器从主服务器二进制日志的正确位置开始。 - 如果选项值等于2,CHANGE MASTER语句被写成SQL注释。如果value被省略,这是默认动作。
  • --single-transaction参数的作用,设置事务的隔离级别为可重复读,即REPEATABLE READ,这样能保证在一个事务中所有相同的查询读取到同样的数据,也就大概保证了在dump期间,如果其他innodb引擎的线程修改了表的数据并提交,对该dump线程的数据并无影响,在这期间不会锁表。
  • --triggers导出触发器。该选项默认启用,用--skip-triggers禁用它。
五、master A 配置1、初始化master B数据库,清空其中的数据2、删除数据库
rm -rf /data/zabbix/mysql/data/*

3、配置mysql
cat > /data/zabbix/mysql/etc/my.cnf < < EOF
[mysqld]
port=3366
user=mysql
server_id=50
binlog_format=ROW
slow_query_log=ON
relay_log_purge=OFF
log_slave_updates=ON
skip_name_resolve=ON
innodb_file_per_table=ON
table_open_cache=64
key_buffer_size=16M
max_allowed_packet=1M
net_buffer_length=8K
sort_buffer_size=512K
read_buffer_size=256K
read_rnd_buffer_size=512K
character-set-server=utf8mb4
init_connect=SET NAMES utf8mb4
collation-server=utf8mb4_general_ci
basedir=/data/zabbix/mysql
datadir=/data/zabbix/mysql/data
log_bin=/data/zabbix/mysql/logs/bin_log
socket=/data/zabbix/mysql/tmp/mysql.sock
log_error=/data/zabbix/mysql/logs/error.log
relay_log=/data/zabbix/mysql/logs/mysql_relaylog
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
relay_log_index=/data/zabbix/mysql/logs/mysql_relaylog

[mysql]
default-character-set = utf8mb4
socket=/data/zabbix/mysql/tmp/mysql.sock

[client]
port=3366
default-character-set = utf8mb4
socket=/data/zabbix/mysql/tmp/mysql.sock

EOF

4、初始化数据库
/data/zabbix/mysql/scripts/mysql_install_db --defaults-file=/data/zabbix/mysql/etc/my.cnf

5、启动数据库
/data/zabbix/mysql/bin/mysqld_safe --defaults-file=/data/zabbix/mysql/etc/my.cnf &

6、创建数据库pwd
/data/zabbix/mysql/bin/mysqladmin -urootpassword Nokia!23+ -S /data/zabbix/mysql/tmp/mysql.sock

7、导入数据库
/data/zabbix/mysql/bin/mysql -uroot-pNokia!23+ -S /data/zabbix/mysql/tmp/mysql.sock -e "set sql_log_bin=0; source /tmp/master.sql; "

8、slave设置导入二进制日志的相关配置1、查看导入sql
/data/zabbix/mysql/bin/mysql -uroot-pNokia!23+ -S /data/zabbix/mysql/tmp/mysql.sock
mysql> help change master to;
# 找到导入的sql
CHANGE MASTER TO
MASTER_HOST=master2.example.com,
MASTER_USER=replication,
MASTER_PASSWORD=password,
MASTER_PORT=3366,
MASTER_LOG_FILE=master2-bin.001,
MASTER_LOG_POS=4,
MASTER_CONNECT_RETRY=10;

2、查找从主库导入二进制日志的位置
mariadb(mysql5.7)是在22行,其他版本的数据库,可以按照关键字来查找,
  • 找到这个记录备份时刻的数据记录,就可以做备份了
```bash vim /root/master.sql 22-- CHANGE MASTER TO MASTER_LOG_FILE=bin_log.000001, MASTER_LOG_POS=526; ```
  • 设置master主机的同步信息
【maradb 双主配置】```bash CHANGE MASTER TO MASTER_HOST=10.224.216.121, MASTER_USER=zabb

    推荐阅读