加入收藏 | 设为首页 | 会员中心 | 我要投稿 武汉站长网 (https://www.027zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL主从复制搭建(一主双从)

发布时间:2023-01-08 11:34:12 所属栏目:MySql教程 来源:互联网
导读: MySQL主从复制(一主双从)一、环境介绍
MySQL之间数据复制的基础是二进制日志文件。MySQL数据库一旦启用二进制日志后,作为Master,它的数据库中所有操作都会以事件的方式记录在二进制日志

MySQL主从复制(一主双从)一、环境介绍

MySQL之间数据复制的基础是二进制日志文件。MySQL数据库一旦启用二进制日志后,作为Master,它的数据库中所有操作都会以事件的方式记录在二进制日志中,其他数据库作为Slave通过一个I/O线程与主服务器保持通信,并监控Master的二进制日志文件的变化,如果发现Master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后Slave的一个SQL线程会把相关的事件执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。

名称IP系统端口版本

Master(主数据库)

192.168.10.175

CentOS6.10

3306

MySQL 5.6.45

Slave(从数据库)

192.168.10.176

CentOS6.10

3306

MySQL 5.6.45

Slave(从数据库)

192.168.10.177

CentOS6.10

3306

MySQL 5.6.45

二、主从搭建1.主从服务器安装MySQL数据库

yum -y install mysql*

2.修改MySQL数据库密码

service mysqld restart
mysql -u root -proot
use mysql;
set password for root@localhost = password('root');

3.配置主数据库Master

vim /etc/my.cnf
[mysqld]
# 添加以下内容
# 启用二进制日志
log-bin=mysql-bin
# 服务器唯一ID,默认是1,这里用的是IP最后一位
server-id=175

4.配置从数据库Slave

vim /etc/my.cnf
[mysqld]
# 添加以下内容
# 启用二进制日志
log-bin=mysql-bin
# 服务器唯一ID,默认是1,这里用的是IP最后一位
server-id=176
# slave修改成server-id=177

5.重启主从数据库

service mysqld restart
mysql -u root -proot
use mysql;
--操作的权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.10.110' IDENTIFIED BY 'root' WITH GRANT OPTION;

6.在主数据库上建立帐户并授权Slave

update user set password=password('root') where user='root' and host='root' or host='localhost';
flush privileges;
GRANT REPLICATION SLAVE ON *.* to 'root'@'192.168.10.176' identified by 'root';
GRANT REPLICATION SLAVE ON *.* to 'root'@'192.168.10.177' identified by 'root';
# 刷新主从数据库的授权权限
flush privileges;
--参数解释:
-h : 指定客户端所要登录的MySQL主机名, 登录本机(localhost 或 127.0.0.1)该参数可以省略;
-u : 登录的用户名;
-p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。
-REPLICATION SLAVE :分配复制权限
-*.* : 可以操作那个数据库
-root : 用户名
-'%' : 可以在所有的电脑上使用这个账号和密码登录

7.登录主数据库,查询Master的状态

show master status;
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 |      106 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

8.配置从数据库Slave

stop slave;
# 每个从数据库都需要执行
change master to master_host="192.168.10.175", master_user="root", master_password="root", master_log_file="mysql-bin.000004", master_log_pos=106;
flush privileges;
start slave;
--参数解释:
-master_host : 设置要连接的主服务器的ip地址
-master_user : 设置要连接的主服务器的用户名
-master_password : 设置要连接的主服务器的密码
-master_log_file : 设置要连接的主服务器的bin日志的日志名称,即第3步得到的信息
-master_log_pos : 设置要连接的主服务器的bin日志的记录位置,即第3步得到的信息(这里注意,最后项不需要加引号。否则配置失败)

9.检查从数据库复制功能状态

show slave status\G;
mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.10.175
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 106
               Relay_Log_File: mysqld-relay-bin.000004
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 106
              Relay_Log_Space: 552
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
1 row in set (0.00 sec)
--参数解释:
Slave_IO_Running=Yes
Slave_SQL_Running=Yes
# 如果都是Yes,则说明配置成功
--从库:Last_SQL_Errno: 1008
# 将同步指针向下移动一个,可以重复操作
-stop slave;
-set global sql_slave_skip_counter=1;
-start slave;
-show slave status\G;

三、主从测试1.主从数据库测试:

主数据库MySQLmysql主机名,建立数据库,并在这个库中建表插入数据

create database cluster;
use cluster;
create table user(id int(3),name char(10));
insert into user values(001,'SERE');
insert into user values(002,'Tom');
insert into user values(003,'Luck');
delete from user where id='2';
update user set name='Lilei' where id='1';
show databases;
show tables;
select * from user;

2.从数据库MySQL查询

show databases;
use cluster;
show tables;
select * from user;

(编辑:武汉站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!