Mysql 之 主从复制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql 之 主从复制相关的知识,希望对你有一定的参考价值。

一、数据库主从复制基本要求:

1、操作系统版本一致(建议)。
2、数据库版本一致(建议)。
3、配置文件参数一致(是指一些性能参数)。

二、网络拓扑

技术分享图片

三、主数据库配置文件

[mysqld]
user = mysql
basedir = /app/mysql
datadir = /app/mysql/data
port=3306
server-id = 10                             #要与从库区别出来
log-bin = mysql-bin                  #必须启用binlog日志功能,主从基于日志同步
binlog_format = mixed             #binlog日志格式
expire_logs_days = 7               
#slave_skip_errors=1028

四、在主库上授权从库用户进行复制

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> grant replication slave on *.* to ‘mysync‘@‘10.3.150.199‘ identified by ‘123456‘;
Query OK, 0 rows affected, 1 warning (0.04 sec)

五、把主库的TEST数据库备份下来

[[email protected] ~]# mysqldump -uroot -F -B test --single-transaction --master-data --triggers --routines --events  > test.sql
#--master-data 默认参数值是1,mysqldump出来的文件就会包括创:建数据库语句和CHANGE MASTER TO这个语句,CHANGE MASTER TO后面紧接着就是file和position的记录,file和position记录的位置就是slave从master端复制文件的起始位置
[[email protected] ~]# ll
总用量 12
-rw-------. 1 root root  959 6月  17 15:20 anaconda-ks.cfg
drwxr-xr-x  2 root root 4096 8月  13 06:57 backup
-rw-r--r--  1 root root 2254 8月  26 02:21 test.sql     #数据库备份文件
[[email protected] ~]# scp test.sql [email protected]:/root/          #把此文件复制到从库里

六、修改从库的配置文件

[mysqld]
user = mysql
basedir = /app/mysql
datadir = /app/mysql/data
port=3306
server-id = 22          #从库必须要与主库不一致

七、在从库上创建上设置同步帐户

mysql> change master to
    -> master_host=‘10.3.150.198‘,
    -> master_user=‘mysync‘,
    -> master_password=‘123456‘;
Query OK, 0 rows affected, 2 warnings (0.08 sec)

八、导入主库备份过来的test.sql文件

    mysql> source /root/test.sql;
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | test               |
    +--------------------+
    5 rows in set (0.00 sec)

九、启动主从同步

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> show slave statusG;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.3.150.198
                  Master_User: mysync
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000011
          Read_Master_Log_Pos: 154
               Relay_Log_File: web02-relay-bin.000007
                Relay_Log_Pos: 367
        Relay_Master_Log_File: mysql-bin.000011
             Slave_IO_Running: Yes           #代表同步成功
            Slave_SQL_Running: Yes         #代表同步成功

九、关于主从同步的的一些异常处理方法

1、提示错误 :Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work."

主要原因:主从服务器都是克隆出来的,导致两个MYSQL的auto.cnf文件里的server-uuid值完全相同。

2、提示错误:

以上是关于Mysql 之 主从复制的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库在线热备(主从复制之AB复制)

MySQL数据库在线热备(主从复制之AB复制)

MySQL之主从复制

Mysql之取消主从复制

mysql数据库之——主从复制读写分离的实验操作

160525高并发之mysql主从复制(linux)