zoukankan      html  css  js  c++  java
  • mysql主从搭建

    搭建mysql主从服务的目的在于将主数据库的操作实时同步到从数据库,将从数据库作为备份数据库。一旦主数据库发生不可预期的灾难,可以通过备份数据库进行接管或者恢复。

    本次搭建mysql主从服务器是在两台Ubuntu16.04环境下测试完成的。

    安装mysql

    首先需要在两台服务器上安装mysql服务,可以直接执行下面命令:

    sudo apt-get install mysql-server
    

    如果安装失败,尝试更新或者更换软件源。注意,更换软件源后一定要执行sudo apt-get update进行更新。

    安装完成后可以通过下面的命令测试是否安装成功:

    sudo netstat -tap | grep mysql
    

    如果安装成功会出现相应的mysql监听服务。

    现在需要设置mysql允许远程访问,首先编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf,注释掉以下内容:

    bind-address = 127.0.0.1
    

    保存退出,然后进入mysql服务,执行授权命令:

    grant all on *.* to root@'%' identified by '你的密码' with grant option;
    flush privileges;
    

    最后退出mysql,重启mysql服务:

    service mysql restart
    

    现在就可以在其它地方远程连接mysql了。

    主从搭建

    MYSQL主从是基于binlog的,主要分为以下几个步骤:

    • 主将更改操作记录到binlog里
    • 从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里
    • 从根据relaylog里面的sql语句按顺序执行

    主上面有一个log dump线程,用来和从的I/O县城传递binlog。从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL县城用来把relaylog里面的sql语句执行一遍。

    由于写操作几乎是实时同步到从数据库,因此从数据库一般有两种作用:一种是做备份用,另一种是作为读用。

    复制数据库

    首先,在主服务器中导出数据库为一个sql文件:

    mysqldum -uroot -proot img > /root/img.sql
    

    然后,在从服务器上获取主服务器上的sql文件:

    sftp root@ip
    get img.sql
    

    exit退出sftp,在从服务器上创建数据库:

    mysql -uroot -proot
    
    create database img;
    use img;
    set names utf8;
    source img.sql
    

    主服务器配置

    编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件,修改或者添加以下内容:

    server-id		= 1
    log_bin			= /var/log/mysql/mysql-bin.log
    binlog_format           = mixed
    expire_logs_days	= 10
    max_binlog_size         = 100M
    binlog_do_db		= autosyspy_develop
    binlog_ignore_db	= mysql
    

    修改完后重启mysql服务:

    service mysql restart
    

    最后进入mysql,执行权限语句:

    grant all privileges on *.* to 'root'@'%' identified by '自定义密码';
    flush privileges;
    

    查看bin-log文件名和位置:

    show master status;
    

    可以看到类似如下内容:

    +------------------+----------+-------------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB      | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+-------------------+------------------+-------------------+
    | mysql-bin.000003 |      769 | img				  | mysql            |                   |
    +------------------+----------+-------------------+------------------+-------------------+
    1 row in set (0.00 sec)
    

    注意File和Position的内容,在后面的从数据库的配置需要用到。

    从服务器配置

    编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件,将server-id改为2。然后重启mysql并连接。

    配置从数据库:

    stop slave;
    change master to
    master_user='root',
    master_password='root',
    master_host='主服务器地址',
    master_log_file='mysql-bin.000003',   #File
    master_log_pos=769;   #Position
    start slave;
    show slave statusG   #查看是否安装成功
    

    在输出中看到如下结果表明就成功了:

     Slave_IO_Running: Yes
    Slave_SQL_Running: YES
    

    如果需要多个从数据库,可以在从数据库的mysqld.cnf文件中设置不同的server_id,并按照以上教程配置一遍。

    如果需要同步多个数据库,可以在主服务器的mysqld.cnf文件中,添加多条binlog-do-db,指向多个数据库。

  • 相关阅读:
    post和get请求
    博客开通了
    【树形动态规划】【CTSC1997】选课 解题报告
    【动态规划】天堂(Heaven) 解题报告
    [NOIP2013]积木大赛
    [树状数组+逆序对][NOIP2013]火柴排队
    [快速幂][NOIP2012]转圈游戏
    [前缀和+二分]借教室
    [字符串]TrBBnsformBBtion
    [NOIP2012]国王游戏
  • 原文地址:https://www.cnblogs.com/suraer/p/9147310.html
Copyright © 2011-2022 走看看