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(比主服务延迟了多少秒)
  • 相关阅读:
    jmeter学习笔记(3)-jmeter结合fiddler
    jmeter学习笔记(2)—http信息头管理器+断言
    requests接口自动化9-共享session和传递cookie
    djangorestframework学习1-通过HyperlinkedModelSerializer,ModelViewSet,routers编写第一个接口
    requests接口自动化8-传递数据为xml形式的post请求:data
    requests接口自动化7-Multi/form-data文件上传形式的post请求:files
    requests接口自动化6-Body里json格式数据形式的post请求:json
    requests接口自动化5-表单参数形式的post请求:data
    requests接口自动化4-登录后才能访问的get请求,需共享cookie
    requests接口自动化3-url里带参数的get请求:params
  • 原文地址:https://www.cnblogs.com/zhengwenqiang/p/8485199.html
Copyright © 2011-2022 走看看