• 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,指向多个数据库。

  • 相关阅读:
    mysql 常用命令
    mysql 存储过程知识点
    position 属性值:relative 与 absolute 区别
    spring 注解列表
    spring aop 术语
    socket、WebSocket
    spring mvc 基础
    requestAnimationFrame 提高动画性能的原因
    markdown 知识点
    SpringMVC Controller 介绍及常用注解
  • 原文地址:https://www.cnblogs.com/suraer/p/9147310.html
Copyright © 2020-2023  润新知