一、环境准备

本次准备两台Linux主机,操作系统都为CentOS6.8, 都安装了相同版本的MySQL.(MySQL5.7)。

主从服务器的防火墙都开启了3306端口。

相关信息如下:

【主服务器】

IP: 192.168.236.100

【从服务器】

IP: 192.168.236.101

二、配置主从复制

主从复制原理:MySQL做主从复制,主要依靠二进制日志。主服务器做什么,从服务器就跟着做什么。

主服务器有一个日志功能,把自己所做的增删改查操作都记录在日志中。从服务器拿到这份日志,根据日志的动作自己做一遍就行了。这样就实现了主从复制。

1.首先修改配置/etc/my.cnf,使其支持二进制日志功能

【主服务器】

在配置文件中添加如下三行代码:

log-bin=mysql-bin
binlog_format=mixed
server-id=100

server-id中的100为该主机IP的末位,方便区分。当然也可以设置其他值,但不要和从服务器相同。

添加完成后保存,并重启MySQL.

参数解释:

log-bin=mysql-bin          //将MySQL二进制日志取名为mysql-bin

binlog_format=mixed    //二进制日志的格式,有三种:statement/row/mixed, 具体分别不多做解释。这里设置mixed.

server-id =100               //为服务器设置独立无二的ID便于区分,这里使用IP地址的最后一位充当server-id.

【从服务器】

从服务器上也按上述操作添加代码,只是server-id不同而已。

log-bin=mysql-bin
binlog_format=mixed
server-id=101

设置完成后保存,并重启MySQL.

2. 在主服务器上为从服务器分配一个账号,就像一把钥匙,从服务器拿着这把钥匙,才能到主服务器上来共享主服务器的日志文件。

【主服务器】

  • 使用root用户登录主服务器的MySQL数据库,执行如下命令来创建一个账号。

GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '1234';

  • 查看主服务器的BIN日志信息(执行完之后记录下File和Position的值,然后在配置完从服务器之前不要做任何操作,因为每次操作服务器的这两个值都会发生变化)

3. 设置从服务器

【从服务器】

使用root用户登录从服务器的MySQL.

  • 关闭slave(如果之前设置过主从复制的话)
            
stop slave;

  • 执行如下代码
CHANGE MASTER TO  MASTER_HOST="192.168.236.100",MASTER_USER="slave",MASTER_PASSWORD="1234",MASTER_LOG_FILE="mysql-bin.000001",MASTER_LOG_POS=438;

参数解释:


MASTER_HOST:   设置要连接的主服务器的IP地址
MASTER_USER:  设置要连接的主服务器的用户名
MASTER_PASSWORD:  设置要连接的主服务器的密码
MASTER_LOG_FILE:  设置要连接的主服务器的BIN日志的日志名称,即第2步得到的信息
MASTER_LOG_POS:  设置要连接主服务器的BIN日志的记录位置,即第2步得到的信息。注意:不要加引号,否则配置失败。


  • 启动从服务器
start slave;
  • 查看从服务器状态,如果Slave_IO_Running和Slave_SQL_Running的值都为YES,说明配置成功。不成功的话,重复上述步骤。
mysql> show slave status;
+----------------------------------+-----------------+-------------+-------------+---------------+------------------+---------------------+--------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+-----------------------------+------------------+--------------------------------------+-----------------------------------+-----------+---------------------+--------------------------------------------------------+--------------------+-------------+-------------------------+--------------------------+----------------+--------------------+--------------------+-------------------+---------------+----------------------+--------------+--------------------+
| Slave_IO_State | Master_Host | Master_User | Master_Port | Connect_Retry | Master_Log_File | Read_Master_Log_Pos | Relay_Log_File | Relay_Log_Pos | Relay_Master_Log_File | Slave_IO_Running | Slave_SQL_Running | Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table | Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table | Last_Errno | Last_Error | Skip_Counter | Exec_Master_Log_Pos | Relay_Log_Space | Until_Condition | Until_Log_File | Until_Log_Pos | Master_SSL_Allowed | Master_SSL_CA_File | Master_SSL_CA_Path | Master_SSL_Cert | Master_SSL_Cipher | Master_SSL_Key | Seconds_Behind_Master | Master_SSL_Verify_Server_Cert | Last_IO_Errno | Last_IO_Error | Last_SQL_Errno | Last_SQL_Error | Replicate_Ignore_Server_Ids | Master_Server_Id | Master_UUID | Master_Info_File | SQL_Delay | SQL_Remaining_Delay | Slave_SQL_Running_State | Master_Retry_Count | Master_Bind | Last_IO_Error_Timestamp | Last_SQL_Error_Timestamp | Master_SSL_Crl | Master_SSL_Crlpath | Retrieved_Gtid_Set | Executed_Gtid_Set | Auto_Position | Replicate_Rewrite_DB | Channel_Name | Master_TLS_Version |
+----------------------------------+-----------------+-------------+-------------+---------------+------------------+---------------------+--------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+-----------------------------+------------------+--------------------------------------+-----------------------------------+-----------+---------------------+--------------------------------------------------------+--------------------+-------------+-------------------------+--------------------------+----------------+--------------------+--------------------+-------------------+---------------+----------------------+--------------+--------------------+
| Waiting for master to send event | 192.168.236.100 | slave | 3306 | 60 | mysql-bin.000001 | 438 | CentOS6-relay-bin.000002 | 320 | mysql-bin.000001 | Yes | Yes | | | | | | | 0 | | 0 | 438 | 529 | None | | 0 | No | | | | | | 0 | No | 0 | | 0 | | | 100 | 087d3459-2c02-11e7-a39a-000c29073d16 | /usr/local/mysql/data/master.info | 0 | NULL | Slave has read all relay log; waiting for more updates | 86400 | | | | | | | | 0 | | | |
+----------------------------------+-----------------+-------------+-------------+---------------+------------------+---------------------+--------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+-----------------------------+------------------+--------------------------------------+-----------------------------------+-----------+---------------------+--------------------------------------------------------+--------------------+-------------+-------------------------+--------------------------+----------------+--------------------+--------------------+-------------------+---------------+----------------------+--------------+--------------------+
1 row in set (0.01 sec)

4. 至此,主从复制配置完毕!


三、测试


1.首先查看主从服务器上有哪些数据库

【主服务器】
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+


【从服务器】
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+



2.在主服务器上新建一个数据库monkey
create database monkey;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| monkey |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)

3.查看从服务器上是否也有了monkey这个数据库,如果有,说明主从复制正常。大功告成!


mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| monkey |
| mysql |
| performance_schema |
| sys |
+--------------------+

Linux下配置MySQL主从复制的更多相关文章

  1. linux下配置mysql默认编码utf8

    linux下配置mysql默认编码utf8 下面是需要在对应地方加入的配置 [client] default-character-set=utf8 [mysqld] character-set-ser ...

  2. linux 下配置mysql区分大小写(不区分可能出现找不到表的情况)怎么样使用yum来安装mysql

    Linux 默认情况下,数据库是区分大小写的:因此,要将mysql设置成不区分大小写 在my.cof 设置 lower_case_table_names=1(1忽略大小写,0区分大小写) 检查方式:在 ...

  3. linux下配置mysql 与错误解决

    1.下载mysql wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.11-el7-x86_64.tar.gz 2.检查linux是否 ...

  4. Linux下配置MySQL需要注意的几点

    1.为mysql加上连接数,linux下最大能允许8000个mysql连接. 经验下,设置为3000 [mysqld] max_connections=3000

  5. Linux下配置Mysql允许远程访问

    操作非常简单,就5步骤,如下: 1.进入 mysql: ? 1 /usr/local/mysql/bin/mysql -u root -p 2.使用 mysql库 : ? 1 use mysql; 3 ...

  6. Linux下配置mysql远程访问

    1 编辑mysql的配置文件 mysqld.cnf root@iZwz99xkrnh5xye3zgi4btZ:~# vi /etc/mysql/mysql.conf.d/mysqld.cnf 2 把  ...

  7. 【数据库开发】在Windows上和Linux上配置MySQL的过程

    [数据库开发]在Windows上和Linux上配置MySQL的过程 标签(空格分隔): [编程开发] 首先是在Windows上尝试用QT进行MySQL数据库开发,结果总出现driver不能load的错 ...

  8. Linux下PHP+MySQL+CoreSeek中文检索引擎配置

    说明: 操作系统:CentOS 5.X 服务器IP地址:192.168.21.127 Web环境:Nginx+PHP+MySQL 站点根目录:/usr/local/nginx/html 目的:安装co ...

  9. Window环境下配置MySQL 5.6的主从复制

    原文:Window环境下配置MySQL 5.6的主从复制 1.环境准备 Windows 7 64位 MySQL 5.6 主库:192.168.103.207 从库:192.168.103.208 2. ...

随机推荐

  1. 如何理解linux多用户多任务

    Linux 的单用户.多任务: 容易理解. Linux 的多用户.多任务 举个例子,比如LinuxSir.Org 服务器,上面有FTP 用户.系统管理员.web 用户.常规普通用户等.在同一时刻,比如 ...

  2. Mongo学习

    几种可能存在的实体类型 public class AAA{ public List<Common> CommonList{get;set;} } public class BBB{ pub ...

  3. net core 在docker(ubuntu)部署

    1.vs新建项目并发布,然后copy到linux系统上,我这里是用的虚拟机. 2 Dockerfile文件配置 FROM microsoft/dotnet:2.1-aspnetcore-runtime ...

  4. 5、两个栈实现队列------------>剑指offer系列

    题目 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路 栈1: 用于入队列存储 栈2: 出队列时将栈1的数据依次出栈,并入栈到栈2中 栈2出栈即栈1的底部数据 ...

  5. centos笔记记录

    1. mac链接远程centos系统的时候,出现的问题: ssh 10.1**.4*.**:36** 会出现ssh: Could not resolve hostname 10.1**.4*.**:3 ...

  6. Yii2中多表关联查询(with、join、joinwith)

    表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order         (id  order_name   custome ...

  7. MySQL常用命令和语句

    1.常用SQL语句 1)常用函数/*type可取值为:MICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEARSECOND_MICROSECONDMINUT ...

  8. JSON数组不用字符串转换的写法

    var organization = []; //机构组织 //初始化用户数据列表中用户机构列的数据源 admin.ajax("GetOrganizationInfo", null ...

  9. 1.JOIN和UNION区别

    1.JOIN和UNION区别join 是两张表做交连后里面条件相同的部分记录产生一个记录集,union是产生的两个记录集(字段要一样的)并在一起,成为一个新的记录集 . JOIN用于按照ON条件联接两 ...

  10. 操作系统项目:向Linux内核添加一个系统调用

    内容: 向Linux增加一个系统调用 撰写一个应用测试程序调用该系统调用 使用ptrace或类似的工具对该测试程序进行跟踪调 环境: 1.vmware workstation 15.0.0 2.ubu ...