zoukankan      html  css  js  c++  java
  • mysql 5.7主从安装和配置

    本文主要介绍mysql 5.7主从复制,转载请注明出处

    下载地址

    模块 版本 下载地址
    mysql 5.7 https://dev.mysql.com/downloads/mysql/
    libaio(可选) 0.3.110 http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/x86_64/RPMS.classic//libaio-0.3.110-alt1.1.x86_64.rpm
    net-tools(可选) 2.0.22 http://mirror.centos.org/centos/7/os/x86_64/Packages/net-tools-2.0-0.22.20131004git.el7.x86_64.rpm

    卸载系统自带的mariadb

    [root@DTDREAM-TRAINING-HUB-01 ~]# rpm -qa|grep mariadb
    mariadb-libs-5.5.52-1.el7.x86_64
    [root@DTDREAM-TRAINING-HUB-01 ~]# rpm remove mariadb-libs -y
    

    安装 mysql 依赖模块(可选,一般系统都安装了)

    [root@DTDREAM-TRAINING-HUB-01 soft]# rpm -ivh libaio-0.3.110-alt1.1.x86_64.rpm
    [root@DTDREAM-TRAINING-HUB-01 soft]# rpm -Uvh net-tools-2.0-0.22.20131004git.el7.x86_64.rpm
    

    安装 mysql

    tar -xvf mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar  -C /opt/data/soft/mysql ; cd /opt/data/soft/mysql
    [root@DTDREAM-TRAINING-HUB-01 ~]# rpm -ivh mysql-community-*.rpm
    

    ### 修改 mysql 默认配置

    删除/etc/my.cnf原有内容并复制以下配置

    [mysqld]
    
    ######## basic settings ########
    
    # 服务器 ID , 主从唯一标识
    server_id=10
    
    # 监听端口
    #port=3306
    
    # 运行用户
    user=mysql
    
    # 监听IP地址, 如果是127.0.0.1, 表示仅本机访问
    #bind_address=127.0.0.1
    
    # 数据修改是否自动提交, 为0不自动提交
    autocommit=1
    
    # 服务器字符集 , utf8mb4为超字符集, 兼容UTF-8并可存储4字节的图片
    character_set_server=utf8mb4
    
    # 禁用DNS主机名查找, 启用以后用内网地址向mysqlslap请求响应快一半
    #skip_name_resolve=1
    
    # 最大连接数
    max_connections=2048
    
    # 主机连接错误次数等于max_connect_errors(默认10)时 , 再次尝试连接将被屏蔽. 可有效防止DDOS攻击
    max_connect_errors=1000
    
    # 数据存储目录
    datadir=/opt/data/mysql
    
    # socket方式运行文件存储路径
    socket=/opt/data/mysql/mysql.sock
    
    # 进程PID文件
    pid_file=/opt/data/mysql/mysqld.pid
    
    # 数据库事务隔离级别
    # 1. READ-UNCOMMITTED(读取未提交内容)级别
    # 2. READ-COMMITTED(读取提交内容)
    # 3. REPEATABLE-READ(可重读)
    # 4. SERIERLIZED(可串行化)
    # 默认级别REPEATABLE-READ
    transaction_isolation=READ-COMMITTED
    
    explicit_defaults_for_timestamp=1
    
    # join是ALL,index,rang或者Index_merge的时候使用的buffer
    join_buffer_size=128M
    
    # 内部内存临时表的最大值
    tmp_table_size=128M
    
    # 临时文件目录
    tmpdir=/tmp
    
    # 最大接受的数据包大小
    max_allowed_packet=16M
    
    # sql_mode 模式, 定义了你MySQL应该支持的sql语法, 对数据的校验等等, 限制一些所谓的不合法操作
    sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
    
    # 服务器关闭交互式连接前等待活动的秒数
    interactive_timeout=60
    
    # 服务器关闭非交互连接之前等待活动的秒数
    wait_timeout=60
    
    # 读入缓冲区的大小
    read_buffer_size=16M
    
    # 随机读缓冲区大小
    read_rnd_buffer_size=32M
    
    # connection缓存
    sort_buffer_size=32M
    
    ######## log settings ########
    
    # 错误日志文件
    log_error=/opt/data/mysql/mysqld.log
    
    # 是否开启慢查询日志收集, 1为启用, 0为禁用
    #slow_query_log=1
    
    # 慢查询日志文件
    #slow_query_log_file=/opt/data/mysql/log/slow.log
    
    # 记录未使用索引的语句
    log_queries_not_using_indexes=1
    
    # 记录管理型慢SQL
    log_slow_admin_statements=1
    
    # 记录 slave 产生的慢查询
    log_slow_slave_statements=1
    
    # 每分钟记录到日志的未使用索引的语句数目, 超过这个值后只记录语句数量和花费的总时间
    log_throttle_queries_not_using_indexes=10
    
    # 日志过期时间天数
    expire_logs_days=90
    
    # binlog日志文件大小
    max_binlog_size=100M
    
    # 记录慢查询超时时间, 默认为秒
    long_query_time=3
    
    # 查询返回少于该参数指定行的SQL不被记录到慢查询日志
    min_examined_row_limit=100
    

    初始化 mysql

    [root@DTDREAM-TRAINING-HUB-01 mysql]# mysqld --initialize --user=mysql
    

    查看 初始化密码

    grep "password" /opt/data/mysql/mysqld.log
    2018-05-04T04:25:59.753312Z 1 [Note] A temporary password is generated for root@localhost: k_muRLmOB1f3
    

    启动 mysql

    [root@DTDREAM-TRAINING-HUB-01 mysql]# systemctl start mysqld
    

    检查 mysql 服务状态

    [root@DTDREAM-TRAINING-HUB-01 mysql]#systemctl status mysqld
    ● mysqld.service - MySQL Server
       Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
       Active: active (running) since Fri 2018-05-04 13:00:05 CST; 44min ago
         Docs: man:mysqld(8)
               http://dev.mysql.com/doc/refman/en/using-systemd.html
      Process: 10706 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
      Process: 10669 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
     Main PID: 10709 (mysqld)
       CGroup: /system.slice/mysqld.service
               └─10709 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
    
    May 04 13:00:04 dtdream-dtopen-prod-db-02 systemd[1]: Starting MySQL Server...
    May 04 13:00:05 dtdream-dtopen-prod-db-02 systemd[1]: Started MySQL Server.
    
    

    设置 mysql 服务自启动

    [root@DTDREAM-TRAINING-HUB-01 mysql]# systemctl enable mysqld
    

    检查 mysql 服务自启动状态

    [root@DTDREAM-TRAINING-HUB-01 mysql]# systemctl list-unit-files --type=service | grep -i mysqld
    mysqld.service                                enabled
    mysqld@.service                               disabled
    
    

    登录 mysql

    [root@DTDREAM-DTOPEN-TRAINING-APP-01 mysql]# mysql -h 127.0.0.1 -uroot -pk_muRLmOB1f3
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 3
    Server version: 5.7.21
    
    Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    mysql>
    

    修改初始化密码

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'DtDream0209';
    Query OK, 0 rows affected (0.01 sec)
    

    切换到 mysql 数据库

    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
    

    查询 root 登录限制

    mysql> select user,host from user;
    +---------------+-----------+
    | user          | host      |
    +---------------+-----------+
    | mysql.session | localhost |
    | mysql.sys     | localhost |
    | root          | localhost |
    +---------------+-----------+
    3 rows in set (0.00 sec)
    

    修改 root 登录限制为允许开放所有登录方式

    mysql> update user set host = '%' where user = 'root';
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    

    在 master 配置 mysql 主从 基于日志复制

    在 master 创建主从同步账号建立一个帐户 "dt_sync" , 且只能允许从 从服务器(172.16.0.167) 地址登陆, 密码是 dtdreamsync

    mysql> grant replication slave on *.* to 'dt_sync'@'172.16.0.167' identified by 'dtdreamsync';
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    

    刷新权限

    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    

    查询主从同步账号

    mysql> select user,host from user;
    +---------------+--------------+
    | user          | host         |
    +---------------+--------------+
    | root          | %            |
    | dt_sync       | 172.16.0.167 |
    | mysql.session | localhost    |
    | mysql.sys     | localhost    |
    +---------------+--------------+
    4 rows in set (0.00 sec)
    

    退出 mysql 命令行

    mysql> quit
    

    创建日志目录

    [root@DTDREAM-TRAINING-HUB-01 etc]# mkdir -p /opt/data/mysql/log
    [root@DTDREAM-TRAINING-HUB-01 log]# mkdir -p /opt/data/mysql/redolog/
    [root@DTDREAM-TRAINING-HUB-01 log]# mkdir -p /opt/data/mysql/undolog/
    

    日志目录权限修改

    [root@DTDREAM-TRAINING-HUB-01 mysql]# chown -R mysql:mysql /opt/data/mysql/log
    [root@DTDREAM-TRAINING-HUB-01 mysql]# chown -R mysql:mysql /opt/data/mysql/redolog
    [root@DTDREAM-TRAINING-HUB-01 mysql]# chown -R mysql:mysql /opt/data/mysql/undolog
    

    修改 master 配置文件

    删除/etc/my.cnf原有内容并复制以下优化内容到配置文件中

    [mysqld]
    
    ######## basic settings ########
    
    # 服务器 ID , 主从唯一标识
    server_id=10
    
    # 监听端口
    #port=3306
    
    # 运行用户
    user=mysql
    
    # 监听IP地址, 如果是127.0.0.1, 表示仅本机访问
    #bind_address=127.0.0.1
    
    # 数据修改是否自动提交, 为0不自动提交
    autocommit=1
    
    # 服务器字符集 , utf8mb4为超字符集, 兼容UTF-8并可存储4字节的图片
    character_set_server=utf8mb4
    
    # 禁用DNS主机名查找, 启用以后用内网地址向mysqlslap请求响应快一半
    skip_name_resolve=1
    
    # 最大连接数
    max_connections=2048
    
    # 主机连接错误次数等于max_connect_errors(默认10)时 , 再次尝试连接将被屏蔽. 可有效防止DDOS攻击
    max_connect_errors=1000
    
    # 数据存储目录
    datadir=/opt/data/mysql
    
    # socket方式运行文件存储路径
    socket=/opt/data/mysql/mysql.sock
    
    # 进程PID文件
    pid_file=/opt/data/mysql/mysqld.pid
    
    # 数据库事务隔离级别
    # 1. READ-UNCOMMITTED(读取未提交内容)级别
    # 2. READ-COMMITTED(读取提交内容)
    # 3. REPEATABLE-READ(可重读)
    # 4. SERIERLIZED(可串行化)
    # 默认级别REPEATABLE-READ
    transaction_isolation=READ-COMMITTED
    
    explicit_defaults_for_timestamp=1
    
    # join是ALL,index,rang或者Index_merge的时候使用的buffer
    join_buffer_size=128M
    
    # 内部内存临时表的最大值
    tmp_table_size=128M
    
    # 临时文件目录
    tmpdir=/tmp
    
    # 最大接受的数据包大小
    max_allowed_packet=16M
    
    # sql_mode 模式, 定义了你MySQL应该支持的sql语法, 对数据的校验等等, 限制一些所谓的不合法操作
    sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
    
    # 服务器关闭交互式连接前等待活动的秒数
    interactive_timeout=60
    
    # 服务器关闭非交互连接之前等待活动的秒数
    wait_timeout=60
    
    # 读入缓冲区的大小
    read_buffer_size=16M
    
    # 随机读缓冲区大小
    read_rnd_buffer_size=32M
    
    # connection缓存
    sort_buffer_size=32M
    
    ######## log settings ########
    
    # 错误日志文件
    log_error=/opt/data/mysql/mysqld.log
    
    # 是否开启慢查询日志收集, 1为启用, 0为禁用
    slow_query_log=1
    
    # 慢查询日志文件
    slow_query_log_file=/opt/data/mysql/log/slow.log
    
    # 记录未使用索引的语句
    log_queries_not_using_indexes=1
    
    # 记录管理型慢SQL
    log_slow_admin_statements=1
    
    # 记录 slave 产生的慢查询
    log_slow_slave_statements=1
    
    # 每分钟记录到日志的未使用索引的语句数目, 超过这个值后只记录语句数量和花费的总时间
    log_throttle_queries_not_using_indexes=10
    
    # 日志过期时间天数
    expire_logs_days=90
    
    # binlog日志文件大小
    max_binlog_size=100M
    
    # 记录慢查询超时时间, 默认为秒
    long_query_time=3
    
    # 查询返回少于该参数指定行的SQL不被记录到慢查询日志
    min_examined_row_limit=100
    
    ######## master replication settings ########
    
    # binlog 日志文件
    #log_bin=/opt/data/mysql/log/mysql-bin.log
    
    # binlog 索引文件
    #log_bin_index=/opt/data/mysql/log/mysql-bin.index
    
    # sync_binlog=0, 当事务提交之后, MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘, 而让Filesystem自行决定什么时候来做同步, 或者cache满了之后才同步到磁盘
    # sync_binlog=n, 当每进行n次事务提交之后, MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘
    # MySQL中系统默认的设置是sync_binlog=0, 也就是不做任何强制性的磁盘刷新指令, 这时候的性能是最好的, 但是风险也是最大的. 因为一旦系统Crash, 在binlog_cache中的所有binlog信息都会被丢失. 而
    # 当设置为"1"的时候, 是最安全但是性能损耗最大的设置. 因为当设置为1的时候, 即使系统Crash, 也最多丢失binlog_cache中未完成的一个事务, 对实际数据没有任何实质性影响.
    # 从以往经验和相关测试来看, 对于高并发事务的系统来说, "sync_binlog"设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多
    #sync_binlog=3
    
    # 启用 GTID 类型
    #gtid_mode=on
    
    # 强制 GTID 一致性
    #enforce_gtid_consistency=1
    
    # 主从一致性校验算法
    #binlog_checksum=CRC32
    
    # slave更新是否记入日志, 在做双主架构时异常重要, 影响到双主架构是否能互相同步
    #log_slave_updates=1
    
    # binlog日志格式
    #binlog_format=row
    
    # 这个参数控制了当mysql启动或重启时, mysql在搜寻GTIDs时是如何迭代使用binlog文件的.  这个选项设置为真, 会提升mysql执行恢复的性能. 因为这样mysql-server启动和binlog日志清理更快
    #binlog_gtid_simple_recovery=1
    
    # 跳过指定error no类型的错误, 设成all 跳过所有错误
    #slave_skip_errors=ddl_exist_errors
    
    ######## slave replication settings ########
    
    # binlog 日志文件
    log_bin=/opt/data/mysql/log/mysql-bin.log
    
    # binlog 索引文件
    log_bin_index=/opt/data/mysql/log/mysql-bin.index
    
    # sync_binlog=0, 当事务提交之后, MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘, 而让Filesystem自行决定什么时候来做同步, 或者cache满了之后才同步到磁盘
    # sync_binlog=n, 当每进行n次事务提交之后, MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘
    # MySQL中系统默认的设置是sync_binlog=0, 也就是不做任何强制性的磁盘刷新指令, 这时候的性能是最好的, 但是风险也是最大的. 因为一旦系统Crash, 在binlog_cache中的所有binlog信息都会被丢失. 而
    # 当设置为"1"的时候, 是最安全但是性能损耗最大的设置. 因为当设置为1的时候, 即使系统Crash, 也最多丢失binlog_cache中未完成的一个事务, 对实际数据没有任何实质性影响.
    # 从以往经验和相关测试来看, 对于高并发事务的系统来说, "sync_binlog"设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多
    sync_binlog=3
    
    # 启用 GTID 类型
    gtid_mode=on
    
    # 强制 GTID 一致性
    enforce_gtid_consistency=1
    
    # binlog日志格式
    binlog_format=row
    
    # 设置 slave 为只读 (仅限制普通用户,不限制超级用户)
    read_only=1
    
    # slave 保存同步中继日志的位置
    relay_log=/opt/data/mysql/log/relay.log
    
    # slave 同步中继日志索引文件
    relay_log_index=/opt/data/mysql/log/relay-log-index
    
    # slave 节点保存 master 节点信息方式 , 设定为 file 会生成master.info 和 relay-log.info 2个文件 ; 设定为 table 时信息就会存在 mysql.master_slave_info 表中
    master_info_repository=TABLE
    
    # 用于保存 slave 读取 relay log 的位置信息
    relay_log_info_repository=TABLE
    
    # 当slave从库宕机后, 假如relay-log损坏了, 导致一部分中继日志没有处理, 则自动放弃所有未执行的relay-log, 并且重新从master上获取日志, 这样就保证了relay-log的完整性
    relay_log_recovery=1
    
    # 这个参数控制了当mysql启动或重启时, mysql在搜寻GTIDs时是如何迭代使用binlog文件的.  这个选项设置为真, 会提升mysql执行恢复的性能. 因为这样mysql-server启动和binlog日志清理更快
    binlog_gtid_simple_recovery=1
    
    # 跳过指定error no类型的错误, 设成all 跳过所有错误
    slave_skip_errors=ddl_exist_errors
    
    # 在从库执行start slave的时候, 会将report-host和report-port(默认3306)发给主库, 主库记录在全局哈希结构变量 slave_list 中
    # 如果想要连report-user和report-password也显示出来, 则需要主库配置参参数show-slave-auth-info
    #report_port=3306
    #report_host=172.16.0.167
    
    ######## innodb settings ########
    
    # innodb每个数据页大小
    innodb_page_size=16K
    
    # 缓存innodb表的索引、数据, 插入数据时的缓冲, 专用mysql服务器设置的大小:  操作系统内存的70%-80%最佳
    innodb_buffer_pool_size=6G
    
    # 可以开启多个内存缓冲池, 把需要缓冲的数据hash到不同的缓冲池中, 这样可以并行的内存读写
    innodb_buffer_pool_instances=8
    
    # 加载本地热数据到InnoDB缓存
    innodb_buffer_pool_load_at_startup=1
    
    # 停止MySQL服务时, InnoDB将InnoDB缓冲池中的热数据保存到本地硬盘
    innodb_buffer_pool_dump_at_shutdown=1
    
    # page cleaner线程每次刷脏页的数量
    innodb_lru_scan_depth=2000
    
    # 事务等待获取资源等待的最长时间, 单位是秒
    innodb_lock_wait_timeout=5
    
    # 这两个设置会影响InnoDB每秒在后台执行多少操作. 大多数写IO(除了写InnoDB日志)是后台操作的.
    # 如果深度了解硬件性能(如每秒可以执行多少次IO操作),则使用这些功能是很可取的,而不是让它闲着
    #innodb_io_capacity=4000
    #innodb_io_capacity_max=8000
    
    # 默认值为 fdatasync.
    # 如果使用 硬件RAID磁盘控制器, 可能需要设置为 O_DIRECT. 这在读取InnoDB缓冲池时可防止双缓冲(double buffering)效应, 否则会在文件系统缓存与InnoDB缓存间形成2个副本(copy).
    # 如果不使用硬件RAID控制器,或者使用SAN存储时, O_DIRECT 可能会导致性能下降
    #innodb_flush_method=O_DIRECT
    
    #innodb_file_format=Barracuda
    #innodb_file_format_max=Barracuda
    #innodb_strict_mode=1
    #innodb_file_per_table=1
    
    # innodb重做日志保存目录
    innodb_log_group_home_dir=/opt/data/mysql/redolog/
    
    # innodb回滚日志保存目录
    innodb_undo_directory=/opt/data/mysql/undolog/
    
    # undo回滚段的数量,  至少大于等于35, 默认128
    innodb_undo_logs=128
    
    # 用于设定创建的undo表空间的个数, 在mysql_install_db时初始化后, 就再也不能被改动了;
    # 默认值为0, 表示不独立设置undo的tablespace, 默认记录到ibdata中; 否则, 则在undo目录下创建这么多个undo文件,
    # 例如假定设置该值为4, 那么就会创建命名为undo001~undo004的undo tablespace文件, 每个文件的默认大小为10M
    # 修改该值会导致Innodb无法完成初始化, 数据库无法启动
    #innodb_undo_tablespaces=0
    
    # InnoDB存储引擎在刷新一个脏页时, 会检测该页所在区(extent)的所有页, 如果是脏页, 那么一起刷新.
    # 这样做的好处是通过AIO可以将多个IO写操作合并为一个IO操作. 对于传统机械硬盘建议使用, 而对于固态硬盘可以关闭
    #innodb_flush_neighbors=1
    
    # 日志文件的大小
    innodb_log_file_size=4G
    
    # 事务在内存中的缓冲
    innodb_log_buffer_size=16M
    
    # 控制是否使用, 使用几个独立purge线程(清除二进制日志)
    innodb_purge_threads=4
    
    # mysql在5.6之前一直都是单列索引限制767, 起因是256×3-1. 这个3是字符最大占用空间(utf8).
    # 在5.6以后, 开始支持4个字节的uutf8. 255×4>767, 于是增加了这个参数. 这个参数默认值是OFF. 当改为ON时, 允许列索引最大达到3072
    innodb_large_prefix=1
    
    # InnoDB kernel并发最大的线程数.
    # 1) 最少设置为(num_disks+num_cpus)*2
    # 2) 可以通过设置成1000来禁止这个限制
    innodb_thread_concurrency=64
    
    # 将死锁相关信息保存到MySQL 错误日志中
    innodb_print_all_deadlocks=1
    
    # RDER BY 或者 GROUP BY 操作的buffer缓存大小
    innodb_sort_buffer_size=64M
    
    ########semi sync replication settings########
    
    # 指定mysql插件目录
    #plugin_dir=/opt/data/mysql/lib/plugin
    
    # 指定载入哪些插件
    #plugin_load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
    
    # 控制主库上是否开启semisync
    #loose_rpl_semi_sync_master_enabled=1
    
    # 控制备库是否开启semisync
    #loose_rpl_semi_sync_slave_enabled=1
    
    # 单位毫秒, 防止半同步复制在没有收到确认的情况下, 发送堵塞. master在超时之前没有收到确认, 将恢复到异步复制, 继续执行半同步没有进行的操作
    #loose_rpl_semi_sync_master_timeout=5000
    [mysqld-5.7]
    
    # 转储每个bp instance LRU上最热的page的百分比. 通过设置该参数可以减少转储的page数
    #innodb_buffer_pool_dump_pct=40
    
    # Page cleaner并未和buffer pool绑定, 其模型为一个协调线程 + 多个工作线程, 协调线程本身也是工作线程.
    # 如果innodb_page_cleaners设置为8, 那么就是一个协调线程, 加7个工作线程
    #innodb_page_cleaners=4
    
    # 开启在线回收(收缩)undo log日志文件
    #innodb_undo_log_truncate=1
    
    # 当超过这个阀值(默认是1G), 会触发truncate回收(收缩)动作, truncate后空间缩小到10M
    #innodb_max_undo_log_size=2G
    
    # 控制回收(收缩)undo log的频率
    #innodb_purge_rseg_truncate_frequency=128
    
    # mysql在搜寻GTID时是如何迭代使用binlog文件的. 这个选项设置为真, 会提升mysql执行恢复的性能. 因为这样mysql-server启动和binlog日志清理更快
    #binlog_gtid_simple_recovery=1
    
    # 该参数控制 error log、genera log等等记录日志的显示时间参数
    log_timestamps=system
    
    # 这个神奇的参数5.7.6版本引入, 用于定义一个记录事务的算法, 这个算法使用hash标识来记录事务.
    # 如果使用MGR, 那么这个hash值需要用于分布式冲突检测何处理.
    # 在64位的系统, 官网建议设置该参数使用 XXHASH64 算法. 如果线上并没有使用该功能, 应该设为off
    #transaction_writeet_extraction=MURMUR32
    
    #show_compatibility_56=on
    
    
    [client]
    
    default_character-set=utf8
    
    [mysql]
    
    default_character-set=utf8
    
    

    重启 mysql 服务

    [root@DTDREAM-TRAINING-HUB-01 etc]# systemctl restart mysqld
    

    查看 binlog 日志状态

    mysql> SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000001 |      154 |              |                  |                   |
    +------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)
    

    查看 GTID 状态

    mysql> show variables like "%gtid%";
    +----------------------------------+-----------+
    | Variable_name                    | Value     |
    +----------------------------------+-----------+
    | binlog_gtid_simple_recovery      | ON        |
    | enforce_gtid_consistency         | ON        |
    | gtid_executed_compression_period | 1000      |
    | gtid_mode                        | ON        |
    | gtid_next                        | AUTOMATIC |
    | gtid_owned                       |           |
    | gtid_purged                      |           |
    | session_track_gtids              | OFF       |
    +----------------------------------+-----------+
    

    查看服务器server_uuid

    mysql> show global variables like '%uuid%';
    +---------------+--------------------------------------+
    | Variable_name | Value                                |
    +---------------+--------------------------------------+
    | server_uuid   | 01378bf6-2b35-11e8-98fe-00163e04ca22 |
    +---------------+--------------------------------------+
    1 row in set (0.00 sec)
    

    查看服务器 server_id

    mysql> show variables like '%server_id%';
    +----------------+-------+
    | Variable_name  | Value |
    +----------------+-------+
    | server_id      | 10    |
    | server_id_bits | 32    |
    +----------------+-------+
    2 rows in set (0.01 sec)
    

    在 slave 上配置 mysql 主从 基于日志复制

    安装参考以上步骤,此处不再详解

    创建日志目录

    [root@DTDREAM-TRAINING-HUB-01 etc]# mkdir -p /opt/data/mysql/log
    [root@DTDREAM-TRAINING-HUB-01 log]# mkdir -p /opt/data/mysql/redolog/
    [root@DTDREAM-TRAINING-HUB-01 log]# mkdir -p /opt/data/mysql/undolog/
    

    日志目录权限修改

    [root@DTDREAM-TRAINING-HUB-01 mysql]# chown -R mysql:mysql /opt/data/mysql/log
    [root@DTDREAM-TRAINING-HUB-01 mysql]# chown -R mysql:mysql /opt/data/mysql/redolog
    [root@DTDREAM-TRAINING-HUB-01 mysql]# chown -R mysql:mysql /opt/data/mysql/undolog
    

    修改 salve 配置文件

    删除原有内容并复制以下内容到配置文件中

    [mysqld]
    
    ######## basic settings ########
    
    # 服务器 ID , 主从唯一标识
    server_id=10
    
    # 监听端口
    #port=3306
    
    # 运行用户
    user=mysql
    
    # 监听IP地址, 如果是127.0.0.1, 表示仅本机访问
    #bind_address=127.0.0.1
    
    # 数据修改是否自动提交, 为0不自动提交
    autocommit=1
    
    # 服务器字符集 , utf8mb4为超字符集, 兼容UTF-8并可存储4字节的图片
    character_set_server=utf8mb4
    
    # 禁用DNS主机名查找, 启用以后用内网地址向mysqlslap请求响应快一半
    skip_name_resolve=1
    
    # 最大连接数
    max_connections=1024
    
    # 主机连接错误次数等于max_connect_errors(默认10)时 , 再次尝试连接将被屏蔽. 可有效防止DDOS攻击
    max_connect_errors=1000
    
    # 数据存储目录
    datadir=/opt/data/mysql
    
    # socket方式运行文件存储路径
    socket=/opt/data/mysql/mysql.sock
    
    # 进程PID文件
    pid_file=/opt/data/mysql/mysqld.pid
    
    # 数据库事务隔离级别
    # 1. READ-UNCOMMITTED(读取未提交内容)级别
    # 2. READ-COMMITTED(读取提交内容)
    # 3. REPEATABLE-READ(可重读)
    # 4. SERIERLIZED(可串行化)
    # 默认级别REPEATABLE-READ
    transaction_isolation=READ-COMMITTED
    
    explicit_defaults_for_timestamp=1
    
    # join是ALL,index,rang或者Index_merge的时候使用的buffer
    join_buffer_size=128M
    
    # 内部内存临时表的最大值
    tmp_table_size=128M
    
    # 临时文件目录
    tmpdir=/tmp
    
    # 最大接受的数据包大小
    max_allowed_packet=16M
    
    # sql_mode 模式, 定义了你MySQL应该支持的sql语法, 对数据的校验等等, 限制一些所谓的不合法操作
    sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
    
    # 服务器关闭交互式连接前等待活动的秒数
    interactive_timeout=60
    
    # 服务器关闭非交互连接之前等待活动的秒数
    wait_timeout=60
    
    # 读入缓冲区的大小
    read_buffer_size=16M
    
    # 随机读缓冲区大小
    read_rnd_buffer_size=32M
    
    # connection缓存
    sort_buffer_size=32M
    
    ######## log settings ########
    
    # 错误日志文件
    log_error=/opt/data/mysql/mysqld.log
    
    # 是否开启慢查询日志收集, 1为启用, 0为禁用
    slow_query_log=1
    
    # 慢查询日志文件
    slow_query_log_file=/opt/data/mysql/log/slow.log
    
    # 记录未使用索引的语句
    log_queries_not_using_indexes=1
    
    # 记录管理型慢SQL
    log_slow_admin_statements=1
    
    # 记录 slave 产生的慢查询
    log_slow_slave_statements=1
    
    # 每分钟记录到日志的未使用索引的语句数目, 超过这个值后只记录语句数量和花费的总时间
    log_throttle_queries_not_using_indexes=10
    
    # 日志过期时间天数
    expire_logs_days=90
    
    # binlog日志文件大小
    max_binlog_size=100M
    
    # 记录慢查询超时时间, 默认为秒
    long_query_time=3
    
    # 查询返回少于该参数指定行的SQL不被记录到慢查询日志
    min_examined_row_limit=100
    
    ######## master replication settings ########
    
    # binlog 日志文件
    #log_bin=/opt/data/mysql/log/mysql-bin.log
    
    # binlog 索引文件
    #log_bin_index=/opt/data/mysql/log/mysql-bin.index
    
    # sync_binlog=0, 当事务提交之后, MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘, 而让Filesystem自行决定什么时候来做同步, 或者cache满了之后才同步到磁盘
    # sync_binlog=n, 当每进行n次事务提交之后, MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘
    # MySQL中系统默认的设置是sync_binlog=0, 也就是不做任何强制性的磁盘刷新指令, 这时候的性能是最好的, 但是风险也是最大的. 因为一旦系统Crash, 在binlog_cache中的所有binlog信息都会被丢失. 而
    # 当设置为"1"的时候, 是最安全但是性能损耗最大的设置. 因为当设置为1的时候, 即使系统Crash, 也最多丢失binlog_cache中未完成的一个事务, 对实际数据没有任何实质性影响.
    # 从以往经验和相关测试来看, 对于高并发事务的系统来说, "sync_binlog"设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多
    #sync_binlog=3
    
    # 启用 GTID 类型
    #gtid_mode=on
    
    # 强制 GTID 一致性
    #enforce_gtid_consistency=1
    
    # 主从一致性校验算法
    #binlog_checksum=CRC32
    
    # slave更新是否记入日志, 在做双主架构时异常重要, 影响到双主架构是否能互相同步
    #log_slave_updates=1
    
    # binlog日志格式
    #binlog_format=row
    
    # 这个参数控制了当mysql启动或重启时, mysql在搜寻GTIDs时是如何迭代使用binlog文件的.  这个选项设置为真, 会提升mysql执行恢复的性能. 因为这样mysql-server启动和binlog日志清理更快
    #binlog_gtid_simple_recovery=1
    
    # 跳过指定error no类型的错误, 设成all 跳过所有错误
    #slave_skip_errors=ddl_exist_errors
    
    ######## slave replication settings ########
    
    # binlog 日志文件
    log_bin=/opt/data/mysql/log/mysql-bin.log
    
    # binlog 索引文件
    log_bin_index=/opt/data/mysql/log/mysql-bin.index
    
    # sync_binlog=0, 当事务提交之后, MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘, 而让Filesystem自行决定什么时候来做同步, 或者cache满了之后才同步到磁盘
    # sync_binlog=n, 当每进行n次事务提交之后, MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘
    # MySQL中系统默认的设置是sync_binlog=0, 也就是不做任何强制性的磁盘刷新指令, 这时候的性能是最好的, 但是风险也是最大的. 因为一旦系统Crash, 在binlog_cache中的所有binlog信息都会被丢失. 而
    # 当设置为"1"的时候, 是最安全但是性能损耗最大的设置. 因为当设置为1的时候, 即使系统Crash, 也最多丢失binlog_cache中未完成的一个事务, 对实际数据没有任何实质性影响.
    # 从以往经验和相关测试来看, 对于高并发事务的系统来说, "sync_binlog"设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多
    sync_binlog=3
    
    # 启用 GTID 类型
    gtid_mode=on
    
    # 强制 GTID 一致性
    enforce_gtid_consistency=1
    
    # binlog日志格式
    binlog_format=row
    
    # 设置 slave 为只读 (仅限制普通用户,不限制超级用户)
    read_only=1
    
    # slave 保存同步中继日志的位置
    relay_log=/opt/data/mysql/log/relay.log
    
    # slave 同步中继日志索引文件
    relay_log_index=/opt/data/mysql/log/relay-log-index
    
    # slave 节点保存 master 节点信息方式 , 设定为 file 会生成master.info 和 relay-log.info 2个文件 ; 设定为 table 时信息就会存在 mysql.master_slave_info 表中
    master_info_repository=TABLE
    
    # 用于保存 slave 读取 relay log 的位置信息
    relay_log_info_repository=TABLE
    
    # 当slave从库宕机后, 假如relay-log损坏了, 导致一部分中继日志没有处理, 则自动放弃所有未执行的relay-log, 并且重新从master上获取日志, 这样就保证了relay-log的完整性
    relay_log_recovery=1
    
    # 这个参数控制了当mysql启动或重启时, mysql在搜寻GTIDs时是如何迭代使用binlog文件的.  这个选项设置为真, 会提升mysql执行恢复的性能. 因为这样mysql-server启动和binlog日志清理更快
    binlog_gtid_simple_recovery=1
    
    # 跳过指定error no类型的错误, 设成all 跳过所有错误
    slave_skip_errors=ddl_exist_errors
    
    # 在从库执行start slave的时候, 会将report-host和report-port(默认3306)发给主库, 主库记录在全局哈希结构变量 slave_list 中
    # 如果想要连report-user和report-password也显示出来, 则需要主库配置参参数show-slave-auth-info
    report_port=3306
    report_host=172.16.0.167
    
    ######## innodb settings ########
    
    # innodb每个数据页大小
    innodb_page_size=16K
    
    # 缓存innodb表的索引、数据, 插入数据时的缓冲, 专用mysql服务器设置的大小:  操作系统内存的70%-80%最佳
    innodb_buffer_pool_size=6G
    
    # 可以开启多个内存缓冲池, 把需要缓冲的数据hash到不同的缓冲池中, 这样可以并行的内存读写
    innodb_buffer_pool_instances=8
    
    # 加载本地热数据到InnoDB缓存
    innodb_buffer_pool_load_at_startup=1
    
    # 停止MySQL服务时, InnoDB将InnoDB缓冲池中的热数据保存到本地硬盘
    innodb_buffer_pool_dump_at_shutdown=1
    
    # page cleaner线程每次刷脏页的数量
    innodb_lru_scan_depth=2000
    
    # 事务等待获取资源等待的最长时间, 单位是秒
    innodb_lock_wait_timeout=5
    
    # 这两个设置会影响InnoDB每秒在后台执行多少操作. 大多数写IO(除了写InnoDB日志)是后台操作的.
    # 如果深度了解硬件性能(如每秒可以执行多少次IO操作),则使用这些功能是很可取的,而不是让它闲着
    #innodb_io_capacity=4000
    #innodb_io_capacity_max=8000
    
    # 默认值为 fdatasync.
    # 如果使用 硬件RAID磁盘控制器, 可能需要设置为 O_DIRECT. 这在读取InnoDB缓冲池时可防止双缓冲(double buffering)效应, 否则会在文件系统缓存与InnoDB缓存间形成2个副本(copy).
    # 如果不使用硬件RAID控制器,或者使用SAN存储时, O_DIRECT 可能会导致性能下降
    #innodb_flush_method=O_DIRECT
    
    #innodb_file_format=Barracuda
    #innodb_file_format_max=Barracuda
    #innodb_strict_mode=1
    #innodb_file_per_table=1
    
    # innodb重做日志保存目录
    innodb_log_group_home_dir=/opt/data/mysql/redolog/
    
    # innodb回滚日志保存目录
    innodb_undo_directory=/opt/data/mysql/undolog/
    
    # undo回滚段的数量,  至少大于等于35, 默认128
    innodb_undo_logs=128
    
    # 用于设定创建的undo表空间的个数, 在mysql_install_db时初始化后, 就再也不能被改动了;
    # 默认值为0, 表示不独立设置undo的tablespace, 默认记录到ibdata中; 否则, 则在undo目录下创建这么多个undo文件,
    # 例如假定设置该值为4, 那么就会创建命名为undo001~undo004的undo tablespace文件, 每个文件的默认大小为10M
    # 修改该值会导致Innodb无法完成初始化, 数据库无法启动
    #innodb_undo_tablespaces=0
    
    # InnoDB存储引擎在刷新一个脏页时, 会检测该页所在区(extent)的所有页, 如果是脏页, 那么一起刷新.
    # 这样做的好处是通过AIO可以将多个IO写操作合并为一个IO操作. 对于传统机械硬盘建议使用, 而对于固态硬盘可以关闭
    #innodb_flush_neighbors=1
    
    # 日志文件的大小
    innodb_log_file_size=4G
    
    # 事务在内存中的缓冲
    innodb_log_buffer_size=16M
    
    # 控制是否使用, 使用几个独立purge线程(清除二进制日志)
    innodb_purge_threads=4
    
    # mysql在5.6之前一直都是单列索引限制767, 起因是256×3-1. 这个3是字符最大占用空间(utf8).
    # 在5.6以后, 开始支持4个字节的uutf8. 255×4>767, 于是增加了这个参数. 这个参数默认值是OFF. 当改为ON时, 允许列索引最大达到3072
    innodb_large_prefix=1
    
    # InnoDB kernel并发最大的线程数.
    # 1) 最少设置为(num_disks+num_cpus)*2
    # 2) 可以通过设置成1000来禁止这个限制
    innodb_thread_concurrency=64
    
    # 将死锁相关信息保存到MySQL 错误日志中
    innodb_print_all_deadlocks=1
    
    # RDER BY 或者 GROUP BY 操作的buffer缓存大小
    innodb_sort_buffer_size=64M
    
    ########semi sync replication settings########
    
    # 指定mysql插件目录
    #plugin_dir=/opt/data/mysql/lib/plugin
    
    # 指定载入哪些插件
    #plugin_load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
    
    # 控制主库上是否开启semisync
    #loose_rpl_semi_sync_master_enabled=1
    
    # 控制备库是否开启semisync
    #loose_rpl_semi_sync_slave_enabled=1
    
    # 单位毫秒, 防止半同步复制在没有收到确认的情况下, 发送堵塞. master在超时之前没有收到确认, 将恢复到异步复制, 继续执行半同步没有进行的操作
    #loose_rpl_semi_sync_master_timeout=5000
    [mysqld-5.7]
    
    # 转储每个bp instance LRU上最热的page的百分比. 通过设置该参数可以减少转储的page数
    #innodb_buffer_pool_dump_pct=40
    
    # Page cleaner并未和buffer pool绑定, 其模型为一个协调线程 + 多个工作线程, 协调线程本身也是工作线程.
    # 如果innodb_page_cleaners设置为8, 那么就是一个协调线程, 加7个工作线程
    #innodb_page_cleaners=4
    
    # 开启在线回收(收缩)undo log日志文件
    #innodb_undo_log_truncate=1
    
    # 当超过这个阀值(默认是1G), 会触发truncate回收(收缩)动作, truncate后空间缩小到10M
    #innodb_max_undo_log_size=2G
    
    # 控制回收(收缩)undo log的频率
    #innodb_purge_rseg_truncate_frequency=128
    
    # mysql在搜寻GTID时是如何迭代使用binlog文件的. 这个选项设置为真, 会提升mysql执行恢复的性能. 因为这样mysql-server启动和binlog日志清理更快
    #binlog_gtid_simple_recovery=1
    
    # 该参数控制 error log、genera log等等记录日志的显示时间参数
    log_timestamps=system
    
    # 这个神奇的参数5.7.6版本引入, 用于定义一个记录事务的算法, 这个算法使用hash标识来记录事务.
    # 如果使用MGR, 那么这个hash值需要用于分布式冲突检测何处理.
    # 在64位的系统, 官网建议设置该参数使用 XXHASH64 算法. 如果线上并没有使用该功能, 应该设为off
    #transaction_write_set_extraction=MURMUR32
    
    #show_compatibility_56=on
    
    
    [client]
    
    default_character-set=utf8
    
    [mysql]
    
    default_character-set=utf8
    

    重启 mysql 服务

    [root@DTDREAM-TRAINING-HUB-01 etc]# systemctl restart mysqld
    

    查看 binlog 日志状态

    mysql> SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000001 |      154 |              |                  |                   |
    +------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)
    

    查看 GTID 状态

    mysql> show variables like "%gtid%";
    +----------------------------------+-----------+
    | Variable_name                    | Value     |
    +----------------------------------+-----------+
    | binlog_gtid_simple_recovery      | ON        |
    | enforce_gtid_consistency         | ON        |
    | gtid_executed_compression_period | 1000      |
    | gtid_mode                        | ON        |
    | gtid_next                        | AUTOMATIC |
    | gtid_owned                       |           |
    | gtid_purged                      |           |
    | session_track_gtids              | OFF       |
    +----------------------------------+-----------+
    

    查看服务器server_uuid

    mysql> show global variables like '%uuid%';
    +---------------+--------------------------------------+
    | Variable_name | Value                                |
    +---------------+--------------------------------------+
    | server_uuid   | 01378bf6-2b35-11e8-98fe-00163e04ca22 |
    +---------------+--------------------------------------+
    1 row in set (0.00 sec)
    

    查看服务器 server_id

    mysql> show variables like '%server_id%';
    +----------------+-------+
    | Variable_name  | Value |
    +----------------+-------+
    | server_id      | 10    |
    | server_id_bits | 32    |
    +----------------+-------+
    2 rows in set (0.01 sec)
    

    配置 slave 连接到 master

    mysql> CHANGE MASTER TO MASTER_HOST='172.16.0.166',MASTER_USER='dt_sync',MASTER_PASSWORD='dtdreamsync',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=0;
    Query OK, 0 rows affected, 2 warnings (0.04 sec)
    

    启动slave

    mysql> START SLAVE;
    Query OK, 0 rows affected (0.01 sec)
    

    查看 slave 状态

    确认 Slave_IO_Running 和 Slave_SQL_Running 两个参数都为 Yes 状态

    mysql> SHOW SLAVE STATUSG
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 172.16.0.166
                      Master_User: dt_sync
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000001
              Read_Master_Log_Pos: 154
                   Relay_Log_File: relay.000002
                    Relay_Log_Pos: 367
            Relay_Master_Log_File: mysql-bin.000001
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                  Replicate_Do_DB:
              Replicate_Ignore_DB:
               Replicate_Do_Table:
           Replicate_Ignore_Table:
          Replicate_Wild_Do_Table:
      Replicate_Wild_Ignore_Table:
                       Last_Errno: 0
                       Last_Error:
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 154
                  Relay_Log_Space: 564
                  Until_Condition: None
                   Until_Log_File:
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File:
               Master_SSL_CA_Path:
                  Master_SSL_Cert:
                Master_SSL_Cipher:
                   Master_SSL_Key:
            Seconds_Behind_Master: 0
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error:
                   Last_SQL_Errno: 0
                   Last_SQL_Error:
      Replicate_Ignore_Server_Ids:
                 Master_Server_Id: 10
                      Master_UUID: 01378bf6-2b35-11e8-98fe-00163e04ca22
                 Master_Info_File: mysql.slave_master_info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
               Master_Retry_Count: 86400
                      Master_Bind:
          Last_IO_Error_Timestamp:
         Last_SQL_Error_Timestamp:
                   Master_SSL_Crl:
               Master_SSL_Crlpath:
               Retrieved_Gtid_Set:
                Executed_Gtid_Set:
                    Auto_Position: 0
             Replicate_Rewrite_DB:
                     Channel_Name:
               Master_TLS_Version:
    1 row in set (0.00 sec)
    

    主从测试

    创建测试数据库 RUNOOB 在 master

    mysql> CREATE DATABASE IF NOT EXISTS RUNOOB DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | RUNOOB             |
    | log                |
    | mysql              |
    | performance_schema |
    | redolog            |
    | sys                |
    | undolog            |
    +--------------------+
    8 rows in set (0.00 sec)
    

    切换到 RUNOOB

    mysql> use RUNOOB
    Database changed
    

    在 RUNOOB 库中创建测试表 runoob_tbl

    mysql> CREATE TABLE IF NOT EXISTS `runoob_tbl`(
        ->    `runoob_id` INT UNSIGNED AUTO_INCREMENT,
        ->    `runoob_title` VARCHAR(100) NOT NULL,
        ->    `runoob_author` VARCHAR(40) NOT NULL,
        ->    `submission_date` DATE,
        ->    PRIMARY KEY ( `runoob_id` )
        -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> show tables
        -> ;
    +------------------+
    | Tables_in_RUNOOB |
    +------------------+
    | runoob_tbl       |
    +------------------+
    1 row in set (0.00 sec)
    

    在 runoob_tbl 表中插入一条数据

    mysql> BEGIN;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES ("python", "人生苦短吾爱python", NOW());
    Query OK, 1 row affected, 1 warning (0.00 sec)
    
    mysql> COMMIT;
    Query OK, 0 rows affected (0.00 sec)
    
    
    mysql>
    mysql> select * from runoob_tbl;
    +-----------+--------------+---------------+-----------------+
    | runoob_id | runoob_title | runoob_author | submission_date |
    +-----------+--------------+---------------+-----------------+
    |         1 | python     | 人生苦短吾爱python      | 2018-03-19      |
    +-----------+--------------+---------------+-----------------+
    1 row in set (0.00 sec)
    
    

    查看 binlog 日志状态

    mysql> SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+------------------------------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                        |
    +------------------+----------+--------------+------------------+------------------------------------------+
    | mysql-bin.000001 |     2187 |              |                  | 01378bf6-2b35-11e8-98fe-00163e04ca22:1-7 |
    +------------------+----------+--------------+------------------+------------------------------------------+
    1 row in set (0.00 sec)
    

    查看 slave 是否已经复制数据

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | RUNOOB             |
    | log                |
    | mysql              |
    | performance_schema |
    | redolog            |
    | sys                |
    | undolog            |
    +--------------------+
    8 rows in set (0.00 sec)
    
    mysql>
    mysql> use RUNOOB;
    Database changed
    mysql>
    mysql> show tables;
    +------------------+
    | Tables_in_RUNOOB |
    +------------------+
    | runoob_tbl       |
    +------------------+
    1 row in set (0.00 sec)
    
    mysql>
    mysql> select * from runoob_tbl;
    +-----------+--------------+---------------+-----------------+
    | runoob_id | runoob_title | runoob_author | submission_date |
    +-----------+--------------+---------------+-----------------+
    |         2 | python     | 人生苦短吾爱python      | 2018-03-19      |
    +-----------+--------------+---------------+-----------------+
    1 row in set (0.00 sec)
    
    mysql>
    mysql> SHOW SLAVE STATUS G
    mysql> SHOW SLAVE STATUS G
    *************************** 1. row ***************************
    ......
                   Master_SSL_Crl:
               Master_SSL_Crlpath:
               Retrieved_Gtid_Set: 01378bf6-2b35-11e8-98fe-00163e04ca22:1-7
                Executed_Gtid_Set: 01378bf6-2b35-11e8-98fe-00163e04ca22:1-7
                    Auto_Position: 0
    ......
    1 row in set (0.00 sec)
    
  • 相关阅读:
    053-509
    053-298
    053-255
    css实现省略号
    github上写blog
    解决内容被挤压缩小问题
    request.getRequestDispather().forward()与response.sendRedirect()
    资料,来自HTML5前端开发学习⑤群
    checkbox与jq<转>2
    checkbox与jq<转>
  • 原文地址:https://www.cnblogs.com/guigujun/p/8990434.html
Copyright © 2011-2022 走看看