MySQL 主从配置

本文如果错误,请联系我。

MySQL之间要实现主从,实际上就是主数据库(master)为其他数据库复制的源文件,从数据库只要跟着主数据库(master)变化即可。

实现主从,首先一个数据库要启动二进制日志文件,作为master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,配置的从数据库为slave,从数据库通过一个I/O线程与主服务器保持通信,并监控主数据库(master)的二进制日志文件的变化,一旦master二进制文件有变化,就会把变化的日志复制到自己的日志中,然后从数据库(slave)的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性。

这样主数据库主要承担的操作为写操作,而从数据库为读操作。

这中间有一个问题,就是主从之间同步有延迟,从数据库向主数据库定时发送心跳检测主数据库的日志文件变化,这之间有一定延迟,目前解决方式我还不知道。

步骤:
##############主数据库##################

-----主数据库IP:47.96.115.85

-----从数据库IP:48.96.112.22

二者为Linux系统。

--创建一个用于slave和master通信的用户账号


从服务器:
--配置唯一的server-id
--使用master分配的用户账号读取master二进制日志
--启用slave服务

 

--开启二进制日志 -->配置唯一的server-id

找到主数据库的配置文件my.cnf或者my.ini,我的在/etc/mysql/my.cnf,在[mysqld]部分插入如下两行:
--[mysqld]
--log-bin=mysql-bin             #开启二进制日志
--server-id=1                       #设置server-id

 

--重启mysql,创建用于同步的账号

注:'Illu'(用户名)@'48.96.112.22''(用户所在主机地址)。还有此账号为从数据库登陆的账号。所以IP为从数据IP。

#创建用户
mysql> CREATE USER 'Illu'@'48.96.112.22'' IDENTIFIED BY 'slavepass';
#分配权限
mysql> GRANT REPLICATION SLAVE ON *.* TO 'Illu'@'48.96.112.22' ;
#刷新权限
mysql>flush privileges;  

--获得master二进制日志文件名及位置

#查看master状态
mysql > SHOW MASTER STATUS;
记录 File(二进制文件名)和 Position(位置) 两行的值, 后面会用到

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 73       | test         | manual,mysql     |
+------------------+----------+--------------+------------------+


######################从数据库################

--同样修改my.cnf文件

[mysqld]
server-id=2 #设置server-id,必须唯一。

之后重启mysql 。

--执行

 CHANGE MASTER TO
         MASTER_HOST='47.96.115.85',                   #主数据ip
         MASTER_USER='Illu',                                    #主数据创建的用户名
         MASTER_PASSWORD='slavepass',             #密码
         MASTER_LOG_FILE='mysql-bin.000003',      #File值
        MASTER_LOG_POS=73;                              #Position 值
#尽量大写

--启动slave同步进程:

mysql>start slave;

查看slave状态:

mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 47.96.115.85
                  Master_User: Illu
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000013
          Read_Master_Log_Pos: 11001
               Relay_Log_File: mysqld-relay-bin.000022
                Relay_Log_Pos: 11115
        Relay_Master_Log_File: mysql-bin.000013
             Slave_IO_Running: Yes                       # YES 就是配置成功
            Slave_SQL_Running: Yes                    # YES 就是配置成功
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
        ...

 

-----------附件 可以在my.ini或者my.cnf添加以下配置,可以提高速度。

1、 不同步哪些数据库  
[mysqld]

binlog-ignore-db = [数据库名]
binlog-ignore-db = mysql  
  
2、 只同步哪些数据库,除此之外,其他不同步  

binlog-do-db = [数据库名]
binlog-do-db = test

接下来就是开始验证 是否配置成功了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值