主从 mysql配置、主主配置.note
一、配置 mysql主从数据库:
1、配置 主数据库:
(1)修改 mysql数据库 配置文件:
vim /etc/mysql/mariadb.conf.d/50-server.cnf

(2)创建 同名的日志和目录,并赋予mysql访问权限:
上面开启了 log_bin ,但是日志的文件默认是不存在的,需要手动创建,否则会报错
mkdir /var/log/mysql
touch /var/log/mysql/mysql-bin.log //文件名需要与上面定义的相同
chown -R mysql:mysql /var/log/mysql(3)创建数据库用户:
mysql
grant all on *.* to 'wordpress'@'%' identified by 'Skill2024';
(4)查看 主数据库的id,并将其截图记录(从数据要输入):
mysql
show master status\G;
2、配置 从数据库:
(1)修改 mysql数据库 配置文件:
从数据库的 server-id 不能够与主数据库一样
vim /etc/mysql/mariadb.conf.d/50-server.cnf
# server-id 不能够与主数据库一样

(2)创建 同名的日志和目录,并赋予mysql访问权限:
上面开启了 log_bin ,但是日志的文件默认是不存在的,需要手动创建,否则会报错
mkdir /var/log/mysql
touch /var/log/mysql/mysql-bin.log //文件名需要与上面定义的相同
chown -R mysql:mysql /var/log/mysql(3)配置为 从数据库:
master_host、master_user 书写的都是 主数据库的IP地址和凭证
## 注意 master_log_file 和 master_log_pos 需要写从 主服务器获取到的信息,而且 master_log_pos 不能够有 引号
mysql
stop slave; //必须先停止数据库
change master to master_host='10.1.20.5',master_user='wordpress',master_password='Skill2024',master_log_file='mysql-bin.000001',master_log_pos=831;
# 或者换行写:
change master to master_host='10.1.20.5',
master_user='wordpress',
master_password='Skill2024',
master_log_file='mysql-bin.000001',
master_log_pos=831;
start slave; //最后再启用
(4)查看 从数据库状态:
# 使用命令 show slave status\G; 查看,但是输出太多了,所以需要在外面查看
mysql -uroot -pSkills39 -hlocalhost -e 'show slave status\G;'
# 如果没有密码,且在本机可以直接查看:
mysql -e 'show slave status\G;' | less
(5)在 主数据库上创建数据库,测试同步:
此时 从服务器是没有数据库的:

主服务器上创建数据库:

从数据库上查看,能够看到数据库已经被同步:

·使用 ansible配置mysql主从数据库:
复杂,但是安全性高(使用的是最小用户权限) 版本:
二、配置 mysql主主数据库:
实际上就是配置两个主从,让两台服务器互为主服务器,互为从服务器
# 参数解释:
1. auto_increment_increment
作用:定义了每次生成 AUTO_INCREMENT 值时递增的步长。
示例:如果 auto_increment_increment 设置为 5,AUTO_INCREMENT 列的值将按 1, 6, 11, 16, ... 的顺序递增。
2. auto_increment_offset
作用:定义了 AUTO_INCREMENT 值的起始偏移量。它确定了第一个 AUTO_INCREMENT 值的初始位置。
示例:如果 auto_increment_offset 设置为 3,且 auto_increment_increment 为 5,那么 AUTO_INCREMENT 列的值将按 3, 8, 13, 18, ... 的顺序递增。确保两边不会生成重复的 auto_increment 值即可
1、配置 Server1:
apt install -y mariadb-server
vim /etc/mysql/mariadb.conf.d/50-server.cnf

# 创建日志目录,并赋予其可读可写权限:
mkdir /var/log/mysql
chmod 777 /var/log/mysql
systemctl restart mysql# 创建数据库用户:
mysql
grant all on *.* to 'admin'@'%' identified by 'Skill39';## 去到对端 Server2 查看数据库id:
mysql
show master status\G;
## 配置主从,指定对端的IP地址和 数据库id:
mysql
stop slave;
change master to
master_host='10.1.20.32',
master_user='admin',
master_password='Skill39',
master_log_file='mysql-bin.000002', //写对端的log
master_log_pos=523; //写对端的id
start slave;# 查看数据库状态:
mysql -uroot -pSkill39 -e 'show slave status\G;' | less
2、配置 Server2:


# 创建日志目录,并赋予其可读可写权限:
mkdir /var/log/mysql
chmod 777 /var/log/mysql
systemctl restart mysql# 创建数据库用户:
mysql
grant all on *.* to 'admin'@'%' identified by 'Skill39';## 去到对端查看 Server1的数据库id:
mysql
show master status\G;
## 配置主从,指定对端的IP地址和 数据库id:
mysql
stop slave;
change master to
master_host='10.1.20.31',
master_user='admin',
master_password='Skill39',
master_log_file='mysql-bin.000001', //写对端的log
master_log_pos=509; //写对端的id
start slave;# 查看数据库状态:
mysql -uroot -pSkill39 -e 'show slave status\G;' | less
·测试:
在 Server1创建数据库 db1:

在 Server2查看:

在 Server2 创建数据库 db2:

在 Server1查看:
