mysql5.7 主主同步_MySQL5.7主主同步安装

主主同步事实上就是在主从的基础上,将原先的从机当主机,主机当从机再配置一遍主从同步,两台mysql都可读写,互为主备。

Mysql服务器之间的主从同步或主主同步是基于二进制日志机制,主服务器使用二进制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主服务器的数据一致。

在使用二进制日志时,主服务器的所有操作都会被记录下来,然后从服务器会接收到该日志的一个副本。从服务器可以指定执行该日志中的哪一类事件(譬如只插入数据或者只更新数据),默认会执行日志中的所有语句。

每一个从服务器会记录关于二进制日志的信息:文件名和已经处理过的语句,这样意味着不同的从服务器可以分别执行同一个二进制日志的不同部分,并且从服务器可以随时连接或者中断和服务器的连接。

主服务器和每一个从服务器都必须配置一个唯一的ID号(在my.cnf文件的[mysqld]模块下有一个server-id配置项),另外,每一个从服务器还需要通过CHANGE MASTER TO语句来配置它要连接的主服务器的ip地址,日志文件名称和该日志里面的位置(这些信息存储在主服务器的数据库里)

mysql5.7版本主主同步部署

root 下

useradd mysql # 加用户echo 'root123'|passwd --stdin mysql # 设置密码tar -zxf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz -C /usr/local/# 解压mv mysql-5.6.34-linux-glibc2.5-x86_64 mysql # 重命名

cd/usr/local/mysql

#mysql5.7没有data目录,手动创建mkdirdatachown -R mysql:mysql mysql/ # 赋予权限

初始化

# 切换用户su -mysql

cd/usr/local/mysql

# 初始化

# mysql5.7和之前版本不同,很多资料上都是这个命令:../scripts/mysql_install_db --user=mysql,而mysql5.7的mysql_install_db命令是在bin目录下 的并且建议 用 mysqld --initialize命令

bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

#在低于5.7版本可以用下面这个命令

#    cd /usr/local/mysql/scripts/

#    ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

如下:

bash-4.1$ bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data2020-09-24T17:18:06.303755Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)2020-09-24T17:18:06.303877Z 0 [Warning] Changed limits: table_open_cache: 431 (requested 2000)2020-09-24T17:18:06.304157Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for moredetails).2020-09-24T17:18:07.357897Z 0 [Warning] InnoDB: New log files created, LSN=45790

2020-09-24T17:18:07.649634Z 0[Warning] InnoDB: Creating foreign key constraint system tables.2020-09-24T17:18:07.798293Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: e9febf85-fe89-11ea-b247-000c2932f416.2020-09-24T17:18:07.814479Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed'cannot be opened.2020-09-24T17:18:07.842511Z 1 [Note] A temporary password is generated for root@localhost: =;pWEA#kr1zi

注意最后一行,这也是和之有版本不同的地方,它给了root一个初始密码,后面要登录的时候要用到这个密码。

切换用户到rootsu -root

# 备份原来的my.cnf文件mv my.cnf my.cnf.bak

#复制配置文件和启动文件到/etc/下

cd /usr/local/mysql/support-files

#复制MySQL的配置文件cp my-default.cnf /etc/my.cnf

#复制启动文件到系统服务下,可以以服务启动cp mysql.server /etc/init.d/mysql

#配置启动文件

vim /etc/init.d/mysql

#添加以下两行

(文件里正好有

basedir=datadir=这样的两行,直接填上就可以了)

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

# 配置环境变量

vi /etc/profile

#添加以下两行

export MYSQL_HOME=/usr/local/mysql

export PATH=$MYSQL_HOME/bin:$PATH

# 环境变量立即生效

source/etc/profile

#配置mysql服务开机自动启动

chkconfig --add mysql

chkconfig mysql on

启动mysql

service mysql start

#登录MySQL

mysql -uroot -p

> 输入初始化最后一行中的密码就可以登录

#登录后,第一次修改密码必须用alter语句

alter user 'root'@'localhost' identified by 'root123' PASSWORD EXPIRE NEVER account unlock;

#设置登录权限(使得root用户可以从任何机器上登录数据库)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root123'WITH GRANT OPTION;

#立即生效

flush privileges;

配置my.cnf配置文件

vi /etc/my.cnf

#修改忽略大小写

lower_case_table_names=1#[mysqld]下

# 修改连接数

max_connections=1000 #[mysqld]下

#重启MySQL

service mysql restart

#登录数据库后验证连接数修改完成

show variables like '%max_connections%';

#关闭防火墙

service iptables stop

#创建数据库

create database `auto1` default character set utf8 collate utf8_general_ci;

*******************************************************************以上在两台数据库服务器操作都是一样的*****************************************************************

# 配置同步(192.168.174.5/192.168.174.2)

=================================================================服务器192.168.174.5============================================================================

#相互授权

grant replication slave,file, select on *.* to 'mstest'@'192.168.174.2' identified by 'root123';

#立即生效

flush privileges;

#退出数据库vi /etc/my.cnf

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

#可以为任意自然数,必须保证两台mysql主机不重复

server-id=2log-bin=mysql-bin

binlog_format=mixed

binlog-do-db=auto1

binlog-ignore-db=mysql

#要同步的数据库,如果需要就填,指定数据库的名称即可,默认为所有库,声明了不同步就默认除了不同步数据库意外的所有库。

replicate-do-db=auto1

replicate-ignore-db=mysql

log-slave-updates

slave-skip-errors=all

#auto_increment_increment=2#auto_increment_offset=2

#重启数据库

service mysql restart

#登录数据库

mysql>show master status;+------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000001 | 154 | auto1 | mysql | |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00sec)

mysql>stop slave;

Query OK,0 rows affected, 1 warning (0.00sec)

#master_log_file='mysql-bin.000002',#配置是的192.168.174.2那边查到的数据

mysql> change master to master_host='192.168.174.2',master_user='mstest',master_password='root123',master_log_file='mysql-bin.000001',master_log_pos=154;

Query OK,0 rows affected, 2 warnings (0.10sec)

mysql>start slave;

Query OK,0 rows affected (0.00 sec)

====================================================================服务器192.168.174.2======================================================================

#相互授权

grant replication slave,file, select on *.* to 'mstest'@'192.168.174.5' identified by 'root123';

#立即生效

flush privileges;

#退出数据库vi /etc/my.cnf

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

#可以为任意自然数,必须保证两台mysql主机不重复

server-id=3log-bin=mysql-bin

binlog_format=mixed

binlog-do-db=auto1

binlog-ignore-db=mysql

#要同步的数据库,如果需要就填,指定数据库的名称即可,默认为所有库,声明了不同步就默认除了不同步数据库意外的所有库。

replicate-do-db=auto1

replicate-ignore-db=mysql

log-slave-updates

slave-skip-errors=all

#auto_increment_increment=2#auto_increment_offset=2

#重启数据库

service mysql restart

#登录数据库

mysql>show master status;+------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000001 | 154 | auto1 | mysql | |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00sec)

mysql>stop slave;

Query OK,0 rows affected, 1 warning (0.00sec)

# master_log_file='mysql-bin.000002',#配置是的192.168.174.5那边查到的数据

mysql> change master to master_host='192.168.174.5',master_user='mstest',master_password='root123',master_log_file='mysql-bin.000001',master_log_pos=154;

Query OK,0 rows affected, 2 warnings (0.04sec)

mysql>start slave;

Query OK,0 rows affected (0.01 sec)

192.168.174.5下

mysql>show slave status\G;*************************** 1. row ***************************Slave_IO_State: Waitingformaster to send event

Master_Host:192.168.174.2Master_User: mstest

Master_Port:3306Connect_Retry:60Master_Log_File: mysql-bin.000001Read_Master_Log_Pos:548Relay_Log_File: t-enter-relay-bin.000002Relay_Log_Pos:517Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: auto1

Replicate_Ignore_DB: mysql

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno:0Last_Error:

Skip_Counter:0Exec_Master_Log_Pos:548Relay_Log_Space:726Until_Condition: None

。。。。。。。。。。

192.168.174.2下

mysql>show slave status\G;*************************** 1. row ***************************Slave_IO_State: Waitingformaster to send event

Master_Host:192.168.174.5Master_User: mstest

Master_Port:3306Connect_Retry:60Master_Log_File: mysql-bin.000001Read_Master_Log_Pos:548Relay_Log_File: py-my-relay-bin.000002Relay_Log_Pos:517Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: auto1

Replicate_Ignore_DB: mysql

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno:0Last_Error:

Skip_Counter:0Exec_Master_Log_Pos:548Relay_Log_Space:724Until_Condition: None

。。。。。。。。

#这两个指标为yes说明配置完成

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

验证一下

在192.168.174.5上的auto1库下创建table1,在192.168.174.2上查询auto1库下的库,有table1

在192.168.174.2上的auto1库下创建table2,在192.168.174.5上查询auto1库下的库,有table2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值