Mysql 配置主从服务器的详细步骤(图文说明)

发布时间:2018-08-17作者:laosun阅读(3929)

Mysql

    博主的电脑是一台mac,一台win7。mac上现安装mysql版本是5.7.23。win7的话我昨天晚上已经下载好了,版本号是:5.7.22。


    官方推荐是版本号最好一样,如果真不一样,至少slave的版本要高于master,版本不一致,可能出现的问题就是同步不稳定(兼容性问题)。 这里呢,我们测试,也就无所谓了。


    mac电脑: 192.168.1.2 (主服务 master)

    win7电脑:192.168.1.3 (从服务 slave)

    注意上边的命名,我下边的文章中可能都使用到了,别混了就行。

    win7下安装5.7.22的教程我已经发布到:

    win7系统安装 MySQL 5.7 步骤(生成data目录、生成mysql服务、修改默认的随机密码)

    主从的配置:


    master 主mysql配置(mac系统上)

    我们去修改my.cnf配置文件。找到server-id 这一行

    增加一下配置(配置还有很多,自己去网上了解一下吧):

    server-id   = 1    ##给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号
    log-bin=mysql-bin  ##开启二进制日志功能,可以随便取,最好有含义(关键就是这里了)
    binlog-do-db=d_sunjs_test  ##需要同步的数据库名称
    binlog_ignore_db=mysql ##过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)

    image.png


    然后保存退出,重启mysql服务。

    测试: show master status;

    如下图所示:


    image.png

    目测没有问题,里边的File、Position以及Binlog_Do_DB都是要用到的。 现在先不管。


    slave 从mysql配置(win7系统上)

    我们进入mysql的安装目录:C:\Program Files\MySQL\MySQL Server 5.7

    发现这个目录下根本没有my.ini文件,好吧,我们自己去创建一个:

    [mysql]  
    # 设置mysql客户端默认字符集  
    default-character-set=utf8  
    [mysqld]  
    #Mysql服务的唯一编号 每个mysql服务Id需唯一
    server-id = 3
    #设置3306端口  
    port = 3306  
    # 设置mysql的安装目录  
    basedir=C:\Program Files\MySQL\MySQL Server 5.7
    # 设置mysql数据库的数据的存放目录  
    datadir=C:\Program Files\MySQL\MySQL Server 5.7\data  
    # 允许最大连接数  
    max_connections=200  
    # 服务端使用的字符集默认为8比特编码的latin1字符集  
    character-set-server=utf8  
    # 创建新表时将使用的默认存储引擎  
    default-storage-engine=INNODB
    #开启查询缓存
    explicit_defaults_for_timestamp=true
    skip-grant-tables

    然后重启mysql服务。


    增加mysql用户:

    主mysql增加远程访问用户,也就是相当于slave服务可以通过远程访问master,通过该用户读取二进制文件,实现数据的同步。

    create user repl;

    GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.3' IDENTIFIED BY 'repl123'; 


    image.png


    好了,我们去测试一下,看能否链接上。

    在win7 mysql从服务上进行测试:


    image.png

    经过测试,没有问题。


    mysql 从服务slave配置链接master的方法:

    先退出之前的连接,重新开启一个cmd窗口吧,然后连接master服务

    change master to master_host='192.168.1.2',

    master_port=3306,

    master_user='repl',

    master_password='repl123', 

    master_log_file='mysql-bin.000003',

    master_log_pos=0;

    image.png


    启动同步:

    start slave;


    image.png


    检测主从同步,如果你看到Slave_IO_Running和Slave_SQL_Running均为yes,则主从复制链接正常:


    image.png

    这里呢,我们的Slave_SQL_Running为no,那么肯定是同步故障的。

    我们来看主服务的 show master status;


    image.png


    好吧,我们先停掉从服务slave,

    stop slave;

    change master to master_host='192.168.1.2',

    master_port=3306,

    master_user='repl',

    master_password='repl123', 

    master_log_file='mysql-bin.000003',

    master_log_pos=797;

    start slave;


    image.png


    再来看一下:


    image.png


    没有问题了。

    下边进行测试:

    先从master上创建一个数据库,命名为d_sunjs_test

    create database d_sunjs_test;

    如下图所示:


    image.png


    然后我们来看一下win7 上的从服务是否也创建了呢?


    image.png


    测试在master服务中创建一张条,加入一条数据。

     CREATE TABLE `d_sunjs_test`.`t_users`  (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

    然后insert一条数据

    insert into t_users(id,name) values(1,'技术客');

    如下图所示:


    image.png


    然后我们来看一下从服务器slave上是否已经同步过来了


    image.png


    截至到目前,mysql的主从配置已经基本完成,至于如何进行参数优化,剩下的就考自己了。

    本实例演示的是单向主从同步,如果想双向的话,同理


0 +1

版权声明

 数据库  mysql

 请文明留言

0 条评论