问题:
ubuntu安装mysql及配置主主互备
解决办法:
两台虚拟机:
机器A: 192.168.31.107
机器B: 192.168.31.108
1. A/B机器分别安装mysql
sudo apt install mysql-server
我在安装时,版本是mysql5.7
设置root用户密码,回车继续
重复root用户密码,回车继续
安装完毕
2. 配置A、B服务器上的mysql
在A上修改配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf
在配置文件中[mysqld]下添加或修改如下内容:
bind-address = 0.0.0.0
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
auto_increment_offset = 1
auto_increment_increment = 2
gtid-mode = on
enforce-gtid-consistency = true
log-slave-updates = true
如果配置文件中存在就修改值,如果不存在就添加
server-id设置为一个整数值,但要保证每台机器上的不同
auto_increment_*这两个值是为了设置id自增的规则,
因为两台mysql主主互备,避免两台机器创建出相同id的记录
在B机器上同样如此修改,只不过有几个值不同
bind-address = 0.0.0.0
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
auto_increment_offset = 2
auto_increment_increment = 2
gtid-mode = on
enforce-gtid-consistency = true
log-slave-updates = true
配置文件都修改完毕
分别重启两个mysql:sudo service mysql restart
3. A、B上创建同步账户
在A、B机器上均使用命令mysql -uroot -p
登录到mysql shell
执行如下命令,创建用户xx,密码为123456用来同步数据grant replication slave on *.* to 'xx'@'%' identified by '123456';
这里A和B上可以设置不同的用户和密码,
但是这里为了方便我用了同样的
4. A、B上设置同步配置
在A机器上执行如下命令:change master to master_host='192.168.31.108', master_port=3306, master_user='xx', master_password='123456', master_auto_position=1;
在B机器上执行如下命令:change master to master_host='192.168.31.107', master_port=3306, master_user='xx', master_password='123456', master_auto_position=1;
两台机器不一样的地方就是,master_host设置彼此的IP地址
5. 开始同步
在A、B机器上分别执行:start slave;
现在已经开启了主主互备模式
执行如下命令,查看同步状态:show slave status \G;
如果Slave_IO_Running和Slave_SQL_Running均为Yes,则成功
6. 测试
在A机器上执行:
create database demo1;
在B机器上查看:show databases;
如果已经同步成功,则B备份A的没有问题
在B机器上执行:
create database demo2;
在A机器上查看:show databases;
如果已经同步成功,则A备份B的没有问题
以上就完成了主主互备模式