MySQL双主配置(使用GTID模式)
实际是主从配置的扩展,例如有两台机器a1,a2,主从模式为a1(M)->a2(S),双主模式就是a1->a2,然后a2->a1
这样,当任意一台挂掉的时候,其中一台可以完全负担起读和写的任务。
说明
- 两台机器 | 10.16.7.62 | 10.16.1.215 |
- 两台机器安装MySQL
配置主服务器
配置主服务器my.ini
#GTID:
#服务器id
server_id=62
#开启gtid模式
gtid_mode=on
#强制gtid一致性,开启后对于特定create table不被支持
enforce_gtid_consistency=on
#binlog
log_bin=master-binlog
log-slave-updates=1
#强烈建议,其他格式可能造成数据不一致
binlog_format=row
#relay log
skip_slave_start=1
# MySQL系统库的数据不需要同步 我们这里写了3个 更加保险
# 同步数据时忽略一下数据库 但是必须在使用use db的情况下才会忽略;如果没有使用use db 比如create user 数据还是会同步的
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
# 使用通配符忽略MySQL系统库的表 这样在create user时也不会进行同步了
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=performance_schema.%
replicate_wild_ignore_table=sys.%
# MySQL系统库的日志不计入binlog 这样更加保险了
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
安装mysql服务(主)
在mysql/bin目录下启动cmd,执行
mysqld --install mysql5.6
显示如下信息:
Service successfully installed.
启动mysql服务:
net start mysql5.6
启动成功
首次登陆:(5.6没有密码)
mysql -uroot
#如果已经安装过,可能提示服务已存在
使用如下命令卸载:
mysqld –remove
修改密码
修改密码的方法:
%表示允许任何主机登陆
1. 5.6以前(创建修改用户)
CREATE user 'test'@'%' IDENTIFIED by 'hisense';
修改密码
update user set password=password("新密码") where user="test";
如下:
mysql> update user set password=password("新密码") where user="root";
mysql> flush privileges;
mysql> quit
2. 5.6以后(创建,修改用户)
CREATE user 'test'@'%' IDENTIFIED by 'hisense';
修改密码
ALTER USER 'test'@'%' IDENTIFIED by 'hisense123';
如下:
mysql> alter user "root"@"localhost" identified by "新密码"; --方法1
mysql> update user set authentication_string=password("新密码") where user="root"; -- 方法2
mysql> flush privileges;
mysql> quit
账号授权
%代表任意主机
对USER账号授权
GRANT ALL ON *.*(数据库.表) TO 'USER'@'%';
如:修改root账号可以在任意主机登陆
grant all on *.* to 'root'@'%' identified by 'hisense';
修改密码后登陆
mysql -uroot -p
输入:hisense
登陆成功
主节点创建rep用户供从节点登陆使用
**创建主节点用户供从节点拉取数据用(62->215)
create user 'rep_master'@'%' identified by 'hisense';
grant replication slave on *.* to 'rep_master'@'%';
flush privileges;
# 查看MySQL主节点的状态
SHOW MASTER STATUS;
配置从服务器
配置从服务器my.ini
#GTID:
#服务器id
server_id=215
#开启gtid模式
gtid_mode=on
#强制gtid一致性,开启后对于特定create table不被支持
enforce_gtid_consistency=on
#binlog
log_bin=slave-binlog
log-slave-updates=1
#强烈建议,其他格式可能造成数据不一致
binlog_format=row
#relay log
skip_slave_start=1
# MySQL系统库的数据不需要同步 我们这里写了3个 更加保险
# 同步数据时忽略一下数据库 但是必须在使用use db的情况下才会忽略;如果没有使用use db 比如create user 数据还是会同步的
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
# 使用通配符忽略MySQL系统库的表 这样在create user时也不会进行同步了
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=performance_schema.%
replicate_wild_ignore_table=sys.%
# MySQL系统库的日志不计入binlog 这样更加保险了
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
安装mysql服务(从)
同主
修改用户名密码
账号登陆
同主
创建从节点rep用户供主节点登陆使用
(62做从节点从215拉数据的账号)
create user 'rep_slave'@'%' identified by 'hisense';
grant replication slave on *.* to 'rep_slave'@'%';
flush privileges;
# 查看MySQL主节点的状态
SHOW MASTER STATUS;
修改从节点指向master
#更改从节点指向master节点
CHANGE MASTER TO
MASTER_HOST='10.16.7.62',
MASTER_USER='rep_master',
MASTER_PASSWORD='hisense',
MASTER_PORT=3306,
MASTER_AUTO_POSITION = 1;
#启动slave进程
start slave
#显示slave状态
show slave status \G
修改主节点指向slave
#更改主节点指向slave节点
CHANGE MASTER TO
MASTER_HOST='10.16.1.215',
MASTER_USER='rep_slave',
MASTER_PASSWORD='hisense',
MASTER_PORT=3306,
MASTER_AUTO_POSITION = 1;
#启动slave进程
start slave
#显示slave状态
show slave status \G
双主至此配置完成,其实就是先配置a->b,在配置b->a
注意,每次重启mysql服务以后,需要重新执行start slave命令
网友评论