设为首页 收藏本站
查看: 586|回复: 0

[经验分享] mysql主从复制

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-8-18 09:33:28 | 显示全部楼层 |阅读模式
mysql主从复制
  1、基本主从服务器配置
   (1)主服务器配置

[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
user = mysql
innodb_buffer_pool_size = 128M
log_bin = master-log  ===========
max_binlog_size = 64M
binlog_format = mixed   ========
basedir = /usr/local/mysql
datadir = /database/mydata
port = 3306
server_id = 1  ==========
socket = /tmp/mysql.sock
log_error = /database/mydata/server1.err
character_set_server = utf8
explicit_defaults_for_timestamp = on
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
   
数据库初始化
  ./scripts/mysql_install_db --user=mysql --datadir=/database/mydata
  
  给从服务器授权
  mysql> grant replication slave on *.* to 'repuser'@'10.0.5.151' identified by 'aixocm';
  mysql> flush privileges;
  mysql> show master status\G
  (2)从服务器配置
[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
user = mysql
innodb_buffer_pool_size = 128M
log_bin = slave-log  ============
max_binlog_size = 64M
log_slave_updates = on =====
binlog_format = mixed  =====主从服务器才需要这两项,从服务器不需要
relay_log = relay-bin  ============
basedir = /usr/local/mysql
datadir = /database/mydata
port = 3306
server_id = 2  ======
socket = /tmp/mysql.sock
log_error = /database/mydata/server1.err
character_set_server = utf8
explicit_defaults_for_timestamp = on
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
   
      数据库初始化
  # ./scripts/mysql_install_db --user=mysql --datadir=/database/mydata
  
  设置主服务器相关信息
  mysql> change master to master_host='10.0.5.150',master_user='repuser',master_password='aixocm',master_log_file='master-log.000003',master_log_pos=409,master_port=3306;
  mysql> start slave;
  mysql> show slave status\G
  mysql> stop slave;
  
  (3)二进制日志操作
  # mysqlbinlog master-log.000001
   # mysqlbinlog --start-datetime='2015-07-13 7:10:0' master-log.000003
   # mysqlbinlog --start-datetime='2015-07-13 7:10:0' --stop-datetime='2015-07-13 7:33:0' master-log.000003
   # mysqlbinlog --start-position=330 master-log.000003
   # mysqlbinlog --start-position=330 --stop-position=1100 master-log.000003
   # mysqlbinlog --start-position=330 --stop-position=1100 master-log.000003 | mysql -u root \\恢复指定二进制日志的内容
   

   mysql> show master logs;
   mysql> show binary logs;
   
   mysql> show binlog events in 'master-log.000003' limit 20;
   mysql> show binlog events in 'master-log.000003' from 409 limit 10;
   
   mysql> purge master logs to 'master-log.000002';  \\删除指定编号之前的日志
   mysql> purge master logs before '2015-07-22 08:00:00';
    (4)设置忽略的数据库
     主服务器设置

     binlog_do_db = sxjy          \\记录二进制日志的数据库
     binlog_ignore_db = test       \\不记录二进制日志的数据库
     binlog_ignore_db = teach
     
     从服务器设置
     replicate_do_db = sxjy        \\设置默认进行二进制日志复制的数据库
     replicate_ignore_db = test    \\不进行二进制日志复制的数据库
     replicate_ignore_db = teach
     replicate_ignore_db = mysql
     replicate_ignore_db = information_schema
     replicate_do_table = sxjy.stu         \\设置进行更新的表
     replicate_ignore_table = sxjy.class   \\不进行更新的表
  
  
  
  从服务器建议设置
     replicate_ignore_db = test            \\不进行二进制日志复制的数据库
     replicate_ignore_db = mysql
     replicate_ignore_db = information_schema
     replicate_wild_do_table = sxjy.stu    \\复制指定的数据库或表的二进制日志
     replicate_wild_do_table = sxkj.%
     replicate_wild_ignore_table = sxjy.class \\不复制指定的数据库或表的二进制日志
     

  练习:先搭建一台mysql数据库服务器,不启用二进制日志,然后启动服务器,先创建一个sxjy数据库,
      在sxjy数据库下创建stu和teach两个表,字段自己添加3-4个,然后插入4-5个记录。然后将
      服务器改为主从结构,要求原先的服务器做主服务器,且在从服务器上要有主服务器上原来的数据,
      主从结构搭建好后,以后添加的数据能够自动同步到从服务器,主从服务器数据要完全一致。
          2、基于GTID的事务复制
    (1)能够基于数据库进行多线程复制(要求2个或2个以上的数据库进行同步)
    (2)能够自动判断要复制的位置
    (3)不能支持非事务存储引擎,如MyISAM
    (4)不支持create table ... select from ... 语句
   

   
    主服务器配置
    log_slave_update = on
    gtid_mode = on   \\开启GTID模式
    enforce_gtid_consistency = on      \\强制GTID的一致性
    master_info_repository =TABLE      \\主服务器信息的记录方式(TABLE或FILE)
    relay_log_info_repository = TABLE  \\中继日志信息的记录方式
    sync_master_info = 1               \\同步主数据库信息
    slave_parallel_workers = 4         \\从服务器的sql线程数,和要复制的数据库相同
    binlog_checksum =CRC32             \\二进制日志的校验方式
    master_verify_checksum = 1         \\主服务器启用校验
    slave_sql_verify_checksum = 1      \\从服务器启用校验
    binlog_rows_query_log_events = 1   \\二进制日志详细记录事件
    report_port = 3306                 \\提够复制的报告端口,和数据库端口一致
    report_host = 10.0.5.150           \\提供复制报告的主机,设为本机地址
   
    mysql> grant replication slave on *.* to 'repuser'@'10.0.5.151' identified by 'aixocm';
    mysql> flush privileges;
  从服务器配置
    log_slave_update = on
    gtid_mode = on   \\开启GTID模式
    enforce_gtid_consistency = on      \\强制GTID的一致性
    master_info_repository =TABLE      \\主服务器信息的记录方式(TABLE或FILE)
    relay_log_info_repository = TABLE  \\中继日志信息的记录方式
    sync_master_info = 1               \\同步主数据库信息
    slave_parallel_workers = 4         \\从服务器的sql线程数,和要复制的数据库相同
    binlog_checksum =CRC32             \\二进制日志的校验方式
    master_verify_checksum = 1         \\主服务器启用校验
    slave_sql_verify_checksum = 1      \\从服务器启用校验
    binlog_rows_query_log_events = 1   \\二进制日志详细记录事件
    report_port = 3306                 \\提够复制的报告端口,和数据库端口一致
    report_host = 10.0.5.151           \\提供复制报告的主机,设为本机地址
   
    mysql> change master to master_host='10.0.5.150',master_user='repuser',
           master_password='aixocm',master_auto_position=1;
    mysql> start slave;
    mysql> show processlist\G
    mysql> show status like 'thread%';
   
   
   slave_skip_errors = all
    slave_skip_errors = 1062,1756,2003
    3、双主复制
    第一台服务器设置

    auto_increment_increment = 2  \\数据表记录的自增量,一般等于服务器的数量
    auto_increment_offset = 1     \\数据表记录每次的递增量,第一台为1,第二台为2,...
    sync_binlog = 0               \\二进制日志写入磁盘的方式
    replicate_same_server_id = 0  \\防止mysql循环更新
   
    mysql> grant replication slave on *.* to 'repuser'@'10.0.5.151' identified by 'aixocm';
    mysql> flush privileges;
    mysql> change master to master_host='10.0.5.151',master_user='repuser',
           master_password='aixocm',master_auto_position=1;
    mysql> start slave;
         


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-259591-1-1.html 上篇帖子: mysql读写分离 下篇帖子: mysql 在数据表中随机取数据或随机排序 mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表