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

[经验分享] MySQL replication-fly天地

[复制链接]

尚未签到

发表于 2018-9-26 13:09:05 | 显示全部楼层 |阅读模式
  没有slave,初级操作步骤,尽量在不影响业务情况下执行备份(比如夜间执行)
  如果数据库使用myisam,可按下面方式操作:
  shell> mysqldump --all-databases --master-data=1 > data.sql
  注:--master-data参数会开启--lock-all-tables并写入change master to
  如果数据库使用的是InnoDB表类型的话,则应该使用single-transcation:
  shell> mysqldump --all-databases --single-transaction --master-data=1 > data.sql
  在从服务器上导入数据
  shell> mysql < data.sql
  因为开始设置了master-data=1,所以系统会自动设置参数:MASTER_LOG_FILE和MASTER_LOG_POS,我们还需要设置剩下的参数:
mysql> CHANGE MASTER TO  
MASTER_HOST='',
  
MASTER_USER='',
  
MASTER_PASSWORD='';
  如果数据量很大的话,mysqldump会非常慢,此时直接拷贝数据文件能节省不少时间:
  在拷贝之前要先锁定数据,然后再获得相关的日志信息(File & Position):
mysql> FLUSH TABLES WITH READ LOCK;  
mysql> SHOW MASTER STATUS;
  接下来拷贝数据文件时,如果是MyISAM表类型的话,直接拷贝即可;如果是InnoDB表类型的话,一定要先停止MySQL服务再拷贝,否则拷贝文件可能无法使用。把拷贝的数据文件直接复制到从服务器的数据目录。
  最后还需要再指定一下日志信息:
mysql> CHANGE MASTER TO  
MASTER_HOST='',
  
MASTER_USER='',
  
MASTER_PASSWORD='',
  
MASTER_LOG_FILE='',
  
MASTER_LOG_POS=;
  有slave服务器,操作步骤:
  stop slave sql_thread;
  show slave status获取Relay_Master_Log_File和Exec_Master_Log_Pos的值
  执行上面的步骤获取数据
  接着在新的从服务器上设置日志信息:
mysql> CHANGE MASTER TO  
MASTER_HOST='',
  
MASTER_USER='',
  
MASTER_PASSWORD='',
  
MASTER_LOG_FILE='',
  
MASTER_LOG_POS=;
  接着在新从服务器上启动复制,旧服务器上启动sql线程。
  show slave status;
  Slave_IO_State: Waiting for master to send event    (I/O线程运行状态)
  Master_Host: 192.168.110.128     (master ip)
  Master_User: repl     (授权同步用户)
  Master_Port: 3306    (连接端口)
  Connect_Retry: 60    (连接失败重连间隔时间)
  Master_Log_File: mysql-bin.000020    (I/O线程正在读取的master二进制日志)
  Read_Master_Log_Pos: 240752   (I/O线程正在读取当前master二进制日志的位置)
  Relay_Log_File: liu1-relay-bin.000007    (SQL线程正在读取的中继日志)
  Relay_Log_Pos: 123892    (SQL线程正在读取当前中继日志的位置)
  Relay_Master_Log_File: mysql-bin.000020    (包含最新事件由SQL线程执行的master二进制日志)
  Slave_IO_Running: Yes    (I/O线程是否运行,运行)
  Slave_SQL_Running: No    (SQL线程是否运行,不运行)
  Replicate_Do_DB:     (同步数据库)
  Replicate_Ignore_DB:     (忽略数据库)
  Replicate_Do_Table:     (同步表)
  Replicate_Ignore_Table:     (忽略表)
  Replicate_Wild_Do_Table: test.%    (跨数据库同步数据库)
  Replicate_Wild_Ignore_Table: %.%    (跨数据库忽略数据库)
  Last_Errno: 0    (最近的状态码)
  Last_Error:     (最近的错误信息)
  Skip_Counter: 0    (跳过N个events)
  Exec_Master_Log_Pos: 123747    (由SQL线程执行的master二进制日志的位置)
  Relay_Log_Space: 124089    (所有中继日志的大小)
  Until_Condition: None    (设置until,没有设置)
  Until_Log_File: (同步到哪个日志)
  Until_Log_Pos: 0    (读取到哪个位置)
  Master_SSL_Allowed: No    (允许SSL,下面的都是ssl设置)
  Master_SSL_CA_File:
  Master_SSL_CA_Path:
  Master_SSL_Cert:
  Master_SSL_Cipher:
  Master_SSL_Key:
  Seconds_Behind_Master: NULL
  Master_SSL_Verify_Server_Cert: No
  Last_IO_Errno: 0    (最近I/O线程返回状态码)
  Last_IO_Error:     (最近I/O线程返回错误信息)
  Last_SQL_Errno: 0    (最近SQL线程返回状态码)
  Last_SQL_Error:     (最近SQL线程返回错误信息)
  Master_Log_File和Read_Master_Log_Pos记录了I/O线程正在读取的master日志和位置
  Relay_Master_Log_File和Exec_Master_Log_Pos记录了SQL线程正在执行的master日志和位置
  Relay_Log_File和Relay_Log_Pos记录了SQL线程正在读取的中继日志和位置(对人数据没有太大作用)
  注:Relay_Log_File和Relay_Log_Pos的值是中继日志中的值(程序需要的数据),SQL线程将这两个值及相应的SQL语句通过程序换算成在master二进制日志文件中的位置,即Relay_Master_Log_File和Exec_Master_Log_Pos的值(人需要的数据),即slave SQL线程正在同步的master日志位置。
  判断I/O和SQL是否同步,看Master_Log_File和Relay_Master_Log_File、Read_Master_Log_Pos和Exec_Master_Log_Pos的值是否相同。这里I/O已经读取所有master日志,但并没有完全同步数据,因为SQL线程滞后了。
  参考文章
  http://huoding.com/2011/04/05/59/comment-page-2#comments
  http://www.cnblogs.com/hustcat/archive/2009/12/19/1627525.html
  http://dev.mysql.com/doc/refman/5.1/en



运维网声明 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-602384-1-1.html 上篇帖子: mysql-mmm集群(多实例) 下篇帖子: keepalived + mysqlroute +mysql实现mysql高可用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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