zoukankan      html  css  js  c++  java
  • MySQl 主从配置实战

    目前后台数据库使用了一个实例做数据统计分析,随着数据井喷,单个实例无法做数据分析。故开始了读写分离。

    1.主配置

    [client]
    port        = 3306
    socket        = /tmp/mysql-3306.sock
    
    # The MySQL server
    [mysqld]
    port        = 3306
    socket        = /tmp/mysql-3306.sock
    basedir=/opt/mysql
    # 使用单独的数据盘
    datadir=/data/mysql
    # 设置最大连接数,这个值等于连接到此数据库的tomcat实例的所有活跃线程数
    max_connections=260
    plugin-dir=/opt/mysql/lib/plugin
    pid-file=/data/mysql/mysql.pid
    skip-external-locking
    log-error=/opt/mysql/log/error.log
    # 使用独立表空间 alter table tbName engine=innodb;才可以将共享表空间转独立表空间
    innodb_file_per_table=1
    # 设置 innodb 的 数据目录,适用于 共享表空间
    #innodb_data_home_dir=/data/mysql/innodb
    #设置innodb 强制恢复 6是只读模式,不支持update insert delete. 0是常规模式
    #innodb_force_recovery=6
    # MyISAM 主键缓存
    key_buffer_size = 16M
    # 最大响应包体
    max_allowed_packet = 5M
    # 最多缓存的表
    table_open_cache = 64
    sort_buffer_size = 512K
    net_buffer_length = 8K
    read_buffer_size = 256K
    read_rnd_buffer_size = 512K
    myisam_sort_buffer_size = 8M
    
    # 记录慢查询
    #log_slow_queries=ON
    slow_query_log=ON
    slow_query_log_file=/var/log/mysql-3306-slow.log
    long_query_time=1
    
    # mysql purge 命令可以清理二进制日志,详情请查阅 ? purge
    log-bin=mysql-bin
    
    
    binlog-ignore-db=mysql
    binlog-ignore-db=test
    # 此处不可以使用单行逗号分割,容易失去日志
    binlog-do-db=globaldata
    binlog-do-db=metaapp
    binlog-do-db=statisticsdata
    # 设置 bin_log 过期自动清理的天数
    expire_logs_days=3
    # 日志格式,官方推荐mixed
    binlog_format=mixed
    
    # 唯一ID,不能与其他Mysql实例重复
    server-id    = 1
    
    sync_binlog=1
    
    [mysqldump]
    quick
    max_allowed_packet = 16M
    
    [mysql]
    no-auto-rehash
    # Remove the next comment character if you are not familiar with SQL
    #safe-updates
    
    [myisamchk]
    key_buffer_size = 20M
    sort_buffer_size = 20M
    read_buffer = 2M
    write_buffer = 2M
    
    [mysqlhotcopy]
    interactive-timeout

    2.检查bin-log日志记录

    mysqlbinlog --start-datetime='2018-02-27 00:00:00' --stop-datetime='2018-02-28 23:01:01' -d statisticsdata /data/mysql/mysql-bin.000058

    binlog-do-db 会影响到日志记录,这里用mysqlbinlog 检查日志是否拿到。

    3.dump导出多个数据库并记录日志位置

    mysqldump -B globaldata metaapp statisticsdata --master-data=1 --add-drop-database --flush-logs > three.sql

    -B 多个数据库 --master-data=1 记录日志位置 --flush-logs 整个dump期间锁表,避免日志读取异常。

    4.配置从服务器

    [client]
    #password    = your_password
    port        = 3306
    socket        = /tmp/mysql-3306.sock
    
    # Here follows entries for some specific programs
    
    # The MySQL server
    [mysqld]
    port        = 3306
    socket        = /tmp/mysql-3306.sock
    basedir=/opt/mysql
    # 使用单独的数据盘
    datadir=/data/mysql
    # 设置最大连接数,这个值等于 数据收集tomcat+数据分析+metaAppService的最大线程数
    max_connections=260
    plugin-dir=/opt/mysql/lib/plugin
    pid-file=/data/mysql/isRunning.pid
    skip-external-locking
    log-error=/data/mysql/log/error.log
    # 使用独立表空间 alter table tbName engine=innodb;才可以将共享表空间转独立表空间
    innodb_file_per_table=1
    # 设置 innodb 的 数据目录,适用于 共享表空间
    #innodb_data_home_dir=/data/mysql/innodb
    #设置innodb 强制恢复 6是只读模式,不支持update insert delete. 0是常规模式
    #innodb_force_recovery=6
    # MyISAM 主键缓存
    key_buffer_size = 16M
    # 最大响应包体
    max_allowed_packet = 5M
    # 最多缓存的表
    table_open_cache = 64
    sort_buffer_size = 512K
    net_buffer_length = 8K
    read_buffer_size = 256K
    read_rnd_buffer_size = 512K
    myisam_sort_buffer_size = 8M
    
    
    #log_slow_queries=ON
    slow_query_log=ON
    slow_query_log_file=/data/mysql/log/mysql-3306-slow.log
    long_query_time=1
    # 主从服务器都要避免使用这个属性
    #skip-networking
    
    # Replication Master Server (default)
    # binary logging is required for replication
    # 暂时关闭 log-bin
    # mysql purge 命令可以清理二进制日志,详情请查阅 ? purge
    #log-bin=mysql-bin
    
    #binlog-ignore-db=mysql,information_schema,test
    #binlog-do-db=globaldata,metaapp,statisticsdata
    # 设置 bin_log 过期自动清理的天数
    #expire_logs_days=3
    # binary logging format - mixed recommended
    # 从服务器不需要配置 binlog_format ,会自动识别。
    #binlog_format=mixed
    
    # required unique id between 1 and 2^32 - 1
    # defaults to 1 if master-host is not set
    # but will not function as a master if omitted
    server-id    = 2
    relay-log=slave-relay-bin
    
    [mysqldump]
    quick
    max_allowed_packet = 16M
    
    [mysql]
    no-auto-rehash
    # Remove the next comment character if you are not familiar with SQL
    #safe-updates
    
    [myisamchk]
    key_buffer_size = 20M
    sort_buffer_size = 20M
    read_buffer = 2M
    write_buffer = 2M
    
    [mysqlhotcopy]
    interactive-timeout

    5.导入dump文件

    dump文件已包含 位置点信息

    mysql < three.sql

    6.开启 slave

    start slave;

    7.查看slave状态

    1. show proccesslist; -- 看 Time
    2. show slave status; -- 看 Seconds_Behind_Master(比主服务延迟了多少秒)
  • 相关阅读:
    Java实现 LeetCode 30 串联所有单词的子串
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 27 移除元素
    Java实现 LeetCode 27 移除元素
    字符编码终极笔记:ASCII、Unicode、UTF-8、UTF-16、UCS、BOM、Endian
  • 原文地址:https://www.cnblogs.com/zhengwenqiang/p/8485199.html
Copyright © 2011-2022 走看看