在centos7中进行Mysql8的主从配置(一)

主从配置有两种思路

        1.使用两台centos7,每台centos7中只安装一个mysql8.

        2.在同一台centos7中安装两个相同版本的mysql8,其中一个使用docker进行安装,两台mysql的ip地址会使用同样的ip地址,为了让区分,需要改变其中一个的端口号,使得两个mysql所占用的端口号不同。

本文先介绍第1种

        准备:

        1.在同一台vmware上安装两台linux,两台linux各自安装了mysql8.0.34,保证root用户是可以正常登陆的。版本具体是8点几不重要,重要的是,两台mysql的版本要一样,相似可能也行,但是为了避免没必要的问题,建议安装相同版本的。注意,如果其中一台linux是由另一台克隆得到的,在建立主从连接时需要修改uuid。

        2.在同一台vmware上安装linux是保证两台linux的网络是通的。切记将主mysql所在的linux的防火墙关闭(命令为:systemctl disable firewalld)。检查两台linux的网络是否是相通,可以通过ping对方的ip,看是否可以ping的通。例如: linux1的ip为192.168.58.3,linux2的ip为192.168.58.4,在linux1中ping 192.168.58.4,ping的通,就说明两台linux的网络是通的。

        3.这里将mylinux2作为主机,mylinux1作为从机,自然地,mylinux2中的mysql后面也称为主mysql,mylinux1的mysql后面也称为从mysql。mylinux3和mylinux4和本文章没有关系,不用关注。在mylinux2的mysql中,创建一个用户Q,并给Q授权可以进行远程登陆,有一个可以进行远程登录的用户非常重要,如果已经有了就可以不再创建了(使用非root用户)。如何创建一个mysql用户并授权可以进行远程登陆,请另外搜索文章。

1.修改MySQL从机配置⽂件

找到mylinux1中mysql8的配置文件my.cnf,一般在/etc下面

编辑my.cnf⽂件   

在[mysqld]的下面配置

server-id=3

如果没有[mysqld],自己写出来之后再在下面配置。主要是用来给mysql服务器编号进行区分的,数字可以是任意的。从服务器中只用配置这一条即可。

修改之后,重启此mysql,重启命令如下:

systemctl restart mysqld

2.主从同步实现

1.配置主mysql

同样的,找到/etc下面的配置文件my.cnf并进行编辑。在[mysqld]下面进行配置。

log-bin=mysql-bin

server-id=4

这里是配置主mysql,所以要打开二进制日志,打开以后mysql的从服务器才可以读取到二进制日志信息。注意mysql的二进制日志和日志是不一样的,可自行搜索,这里不讲述区别。log-bin是打开二进制日志,mysql-bin是规定二进制日志文件名的开头为mysql-bin.编辑的配置信息如下图:

配置好以后要重启mysql,重启命令如下:

systemctl restart mysqld

2.从机备份主机原有数据

在做主从同步时,如果从机需要主机上原有数据,就要先复制⼀份到从机。

        1.收集主机原有数据

        在从机中输入linux命令:

        mysqldump -umashibing -pAbc87654321! -h 192.168.58.4 mgdb --lock-all-tables > ~/master_db.sql

        警告不用管,只要不报错,就代表成功了。

        命令解析:

        mysqldump:复制数据库的一个命令

        -umashibing -pAbc87654321!  :要登陆的主mysql的账号和密码,这就是前面要求创建

        一个可以远程登录的mysql用户Q的原因,用来远程复制数据库。

        -h 192.168.58.4   :主mysql的ip地址,也就是主mysql所在的linux的ip地址

        mgdb    : 指定要复制的数据库的名称为mgdb,这里修改为自己的具体的数据库名称就行了

        --lock-all-table  :   锁表,加上就对了,不加也可以,不必追究这个。

        >  ~/master_db.sql  将mgdb这个数据库中的信息保存到 ~目录下的master_db.sql这个文件中

        注意:生成的master_db.sql这个文件中有mgdb这个数据库中的数据的SQL语句

        2. 从机复制主机原有数据

        将~目录下的master_db.sql这个文件中储存的数据映射到从数据库中

        在从机中输入linux命令:

        mysql -uroot -pAbc87654321! -e "USE mgdb; SOURCE ~/master_db.sql;"

        命令解析:

        这个命令使用 -e 选项来指定要在MySQL中执行的SQL语句,USE mgdb;意思是要将数据还原到的数据库,即要将master_db.sql这个文件中的数据还原到“从机mysql”的mgdb这个数据库中,所以,如果“从机mysql”中没有mgdb这个数据库,要先在从机mysql中创建mgdb这个数据库,命令为:create database mgdb;

        注意:复制以后检查从机mysql中的数据库mgdb,看数据是否成功转移过来了!!!如果mgdb中没有本应存在的数据,可以打开master_db.sql文件,查看其中是否有创建数据表、数据相关的sql语句。如何打开sql文件?可以将其传到widows中,用sql-server打开,或者其他的能打开sql文件的软件也行。

        例如sql-server打开master_db.sql文件以后,里面的内容如下:

3.主从同步实现

      1.  在主服务器中创建用于从服务器同步数据的账号,这里是再次创建一个专门用于同步数据

        的账号。

        #登录到主机 mysql –uroot -pAbc87654321!

        #创建用户repl    CREATE USER 'repl'@'%' IDENTIFIED BY 'Abc87654321!';

        #授予repl这个用户同步数据时要用到的的权利   GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

        #刷新权限 FLUSH PRIVILEGES;

        2.展示主MySQL的⼆进制⽇志信息

        将File和Position这两个的值记住!

        3.从机mysql连接主机mysql

        # 登录到从机   mysql -uroot -pAbc87654321!

        #从机连接到主机,输入sql语句,sql的解析在下面    change master to master_host='192.168.58.4',master_user='repl',master_password='Abc87654321!',master_log_file='mysql-bin.000004',master_log_pos=3196;

        #开启从机服务   start slave;

        #展示从机服务状态  show slave status \G

如果不是两个yes。对应的错误,将在另一篇文章中讲解。

        SQL语句的解析:

        

   change master to: 这是SQL语句的起始部分,表示接下来要修改主从复制的配置。

   master_host='192.168.58.4': 这里指定了主数据库的IP地址,即要复制数据的来源。在这个

         示例中,主数据库的IP地址是192.168.58.4。

   master_user='repl': 这里指定了用于复制的MySQL用户的用户名。通常,这是一个具有适

         当权限的用户,用于连接到主数据库并获取更新。

   master_password='Abc87654321!': 这是用于连接到主数据库的MySQL用户的密码。这是保

         密的信息,只有具有适当权限的人才能访问它。

   master_log_file='mysql-bin.000004': 这是二进制日志文件的名称,它包含了主数据库上的

   更改记录。从这个文件开始读取以进行复制。

   master_log_pos=3196: 这是在二进制日志文件中的位置,从这个位置开始读取并复制更改。

       

最后,测试:

在主机中新建⼀个数据库后,直接在从机mysql中查看这个数据库是否存在。

        

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CentOS 7下配置MySQL 5.7.22的主从复制,需要以下步骤: 1.安装MySQL 5.7.22版本 在CentOS 7上安装MySQL 5.7.22,可以使用如下命令: ``` sudo yum install mysql-server ``` 2.配置主服务器 在主服务器的配置文件`/etc/my.cnf`添加如下内容: ``` server-id=1 log-bin=mysql-bin binlog-do-db=test ``` 其,`server-id`表示服务器的ID,`log-bin`表示开启二进制日志,`binlog-do-db`表示指定需要同步的数据库名称。 3.重新启动MySQL服务器 在修改了配置文件后,需要重新启动MySQL服务器: ``` sudo systemctl restart mysqld ``` 4.创建用于复制的用户 在主服务器上创建一个用于复制的用户,并授予复制权限: ``` GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; ``` 其,`slave_user`是用于复制的用户名,`password`是用户密码。 5.查看主服务器状态 在主服务器上运行如下命令查看主服务器状态: ``` SHOW MASTER STATUS; ``` 记录下`File`和`Position`的值,备用。 6.配置从服务器 在从服务器的配置文件`/etc/my.cnf`添加如下内容: ``` server-id=2 replicate-do-db=test ``` 其,`server-id`表示服务器的ID,`replicate-do-db`表示指定需要同步的数据库名称。 7.重新启动MySQL服务器 在修改了配置文件后,需要重新启动MySQL服务器: ``` sudo systemctl restart mysqld ``` 8.设置从服务器复制主服务器 在从服务器上运行如下命令,设置从服务器复制主服务器: ``` CHANGE MASTER TO MASTER_HOST='master_host_name', MASTER_USER='slave_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='master_log_file_name', MASTER_LOG_POS=master_log_pos; ``` 其,`master_host_name`是主服务器的IP地址或主机名,`slave_user`和`password`是用于复制的用户名和密码,`master_log_file_name`和`master_log_pos`是之前在主服务器上记录的值。 9.启动从服务器复制 在从服务器上运行如下命令,启动从服务器复制: ``` START SLAVE; ``` 10.查看从服务器状态 在从服务器上运行如下命令查看从服务器状态: ``` SHOW SLAVE STATUS\G ``` 如果输出`Slave_IO_Running`和`Slave_SQL_Running`的值都为`Yes`,则表示从服务器已经成功复制主服务器。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值