设为首页 收藏本站
查看: 1459|回复: 5

[经验分享] Mysql主从复制 (suse 11 sp2)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2013-7-31 09:51:14 | 显示全部楼层 |阅读模式

Mysql主从复制 (suse 11 sp2)
Mysql主从复制步骤很简单,仔细看,你一定懂

环境:
A: 10.12.241.151 作为master,没有数据

B: 10.12.241.150  作为slave,没有数据
以下是在机器Client的root和机器Server的root之间建立安全信任关系的步骤:

主备互信
1. 在机器Client上root用户执行ssh-keygen命令,生成建立安全信任关系的证书。

[iyunv@Client root]# ssh-keygen -b 1024 -t rsa

[iyunv@Client root]#注意:在程序提示输入passphrase时直接输入回车,表示无证书密码。

上述命令将生成私钥证书id_rsa和公钥证书id_rsa.pub,存放在用户家目录的.ssh子目录中。
mysql-slave:~/.ssh # cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAxUteRy+XN1S8U6fiMP9NPLSbLhoYcDyHn+efCJUrvq14SavgtvSBTmuU8+hHho9Q/1XzSlxks7cQfTkBvU7kIe5Aec++lIZDAILyrpD8FVX8oNCQsXAYWNOZxDdusUAVu
krQ5gSNlVIgsH2OKjseDxZ/kNQ+sHKdfGx9pgNv05s= root@mysql-slave

2. 将公钥证书id_rsa.pub复制到机器Server的root家目录的.ssh子目录中,同时将文件名更换为authorized_keys。
或者直接复制id_rsa.pub 内容即可
[iyunv@Client root]# scp -p .ssh/id_rsa.pub root@192.168.3.206:/root/.ssh/authorized_keys
root@192.168.3.206's password:          <-- 输入机器Server的root用户密码
id_rsa.pub           100% |**************************|   218       00:00
[iyunv@Client root]#在执行上述命令时,两台机器的root用户之间还未建立安全信任关系,所以还需要输入机器Server的root用户密码。

经过以上2步,就在机器Client的root和机器Server的root之间建立安全信任关系。下面我们看看效果:



关闭suse 11 sp2防火墙
临时关闭防火墙,重启失效

或者chkconfig --level B SuSEfirewall2_init off (设置防火墙默认关闭状态,重启生效)

一:主服务器上:
注意:mysql参数

  binlog-do-db = 数据库名      (你要备份的数据库)
  binlog-ignore-db = 数据库名  (你不需要备份的数据库)
  如果没有在/etc/my.cnf添加以上2个参数,那就是说明备份所有数据库


(1) 确保/etc/my.cnf 中有如下参数,一般情况下都是都有的,但是以确保实验的成功率还是检查一下比较好。假如没有如下参数,自己手动添加,并重启mysql服务器
   [mysqld]   
   log-bin=mysql-bin (启动二进制文件)
    server-id=1  (服务器ID)
  ( 2 ) :登录mysql服务器,添加一个叫做beifen的用户,并授权给从服务器
[iyunv@localhost ~]# mysql -uroot –p123456 登录mysql
这里需要指明一下啊 这个123456是我的mysql的密码
mysql> grant replication slave on *.* to 'beifen'@'10.12.241.150' identified by '123'; 创建 beifen用户,密码设置为123  并授权给10.12.241.150使用。
mysql>grant select,insert,update,delete on *.* to beifen@"%" Identified by "123";
mysql>set global server_id=1;
mysql>flush privileges;             # 刷新
   ( 3 )查询主数据库的状态,并记下File和Position的值,这个在配置从数据库的时候用的到

mysql> show master status \G;
*************************** 1. row ***************************
            File: mysql-bin.000001
        Position: 98
    Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)



二:从服务器上
(1) 修改配置文件/etc/my.cnf 将service-id=1修改为server-id=2
(2) 并重启mysql服务器
[iyunv@localhost ~]# mysqladmin -p123456 shutdown
[iyunv@localhost ~]# mysqld_safe --user=mysql &

(3)登录mysql服务器
[iyunv@localhost ~]# mysql -uroot –p123456
mysql>change master to master_host='10.11.241.155', master_user='beifen', master_password='123',master_log_file='mysql-bin.000004',master_log_pos=98;

( 4 ) 启动slave同步
mysql > start slave;

(5) 检查主从同步,如果您看到Slave_IO_Running和Slave_SQL_Running均为Yes,则主从复制连接正常。

mysql > show slave status\G
如下图:


OK! 主从复制完成,现在可以去验证了
验证方法:去主服务器上新建一个数据库,然后登录从服务器看看刚才在主服务器新建的数据库在不在


注意:如果master服务器上做主从之前已经有数据了,我们就必须要把数据库导出来  然后导入从数据库 (方法多种)

导数据之前:
进行锁表操作,不让数据进行写入动作,这么做事为了防止从数据库的原始数据和主数据库的原始数据不一致。

mysql> flush tables with read lock;
记住数据导完后要解锁:
mysql> unloclk tables;

然后用导出数据,再把导出的数据导入从数据库

但是大家有没有想到一个问题,如果从数据库有很多台,并且数据库很大的情况下,这样做的严重影响效率

最好的方法是:先将主服务器上面的数据用mysqldump命令导出来备份,然后删掉那个数据库,等搭建好主从之后,在主服务器上面新建原来的那个数据库,然后用mysql命令导入开始备份的数据、这时再去看看从服务器上面是不是有那哥数据库的数据。



如果执行
  遇到这种情况

可以用这个语句试一下

Mysql > stop slave;
Mysql > set global sql_slave_skip_counter =1 ; (让mysql跳过一次错误,继续执行)
Mysql > start slave;



mysql主从同步,show slave status命令,结果详解

mysql> show slave status\G;
*************************** 1. row ***************************
              Slave_IO_State: Waiting for master to send event  #等待master发生事件
                 Master_Host: 192.168.16.42   #同步master服务器IP地址
                 Master_User: rsync#建立同步使用用户
                 Master_Port: 3306#master服务器mysql使用端口
               Connect_Retry: 60#连接重拾时间
             Master_Log_File: mysql-bin.000001#I/O线程当前正在读取的主服务器二进制日志文件的名称
         Read_Master_Log_Pos: 107#本机I/O线程读取主服务器二进制日志位置
              Relay_Log_File: 3306-relay-bin.000002#SQL线程当前读取执行的中继日志文件的名称
               Relay_Log_Pos: 253#SQL线程读取执行中继日志的位置
       Relay_Master_Log_File: mysql-bin.000001#由SQL线程执行的包含多数近期事件的主服务器二进制日志文件的名称
            Slave_IO_Running: Yes#I/O线程是否启动并成功连接到主服务器上
           Slave_SQL_Running: Yes#SQL线程是否启动
             Replicate_Do_DB: #设置从master服务器进行同步的数据库,通过replicate-do-db选项设置
         Replicate_Ignore_DB: mysql,test,information_schema  #设置不从master端进行数据同步的数据库,replicate-ignore-db选项设置
          Replicate_Do_Table: #设置从master服务器进行同步的表,通过replicate-ignore-table选项设置
      Replicate_Ignore_Table: #设置不从master端进行数据同步的表,replicate-ignore-table选项设置
     Replicate_Wild_Do_Table: #告诉从服务器线程限制复制更新的表匹配指定的数据库和表名模式的语句。模式可以包含‘%’和‘_’通配符,与LIKE模式匹配操作符具有相同的含义。要指定多个表,应多次使用该选项,每个表使用一次。该选项可以跨数据库进行更新。请读取该选项后面的注意事项。例如:--replicate-wild-do-table=foo%.bar%只复制数据库名以foo开始和表名以bar开始的表的更新。
Replicate_Wild_Ignore_Table: #告诉从服务器线程不要复制表匹配给出的通配符模式的语句。要想忽略多个表,应多次使用该选项,每个表使用一次。该选项可以跨数据库进行更新。请读取该选项后面的注意事项。例如:--replicate-wild-ignore-table=foo%.bar%不复制数据库名以foo开始和表名以bar开始的表的更新。
                  Last_Errno: 0#最近的一次错误码
                  Last_Error: #最近一次错误码的内容
                Skip_Counter: 0#最近被使用的用于SQL_SLAVE_SKIP_COUNTER的值,例如:SET GLOBAL SQL_slave_SKIP_COUNTER = n;
         Exec_Master_Log_Pos: 107#SQL线程执行来自master的二进制日志最后一个事件位置
             Relay_Log_Space: 408#所有原有的中继日志结合起来的总大小
             Until_Condition: None#复制until条件,在stop slave,start slave(不带until)或server重启的时候会自动重置
              Until_Log_File: #复制停止的文件名
               Until_Log_Pos: 0#复制停止的文件位置
          Master_SSL_Allowed: No#是否使用SSL连接master,如果允许对主服务器进行SSL连接,则值为Yes。如果不允许对主服务器进行SSL连接,则值为No。如果允许SSL连接,但是从属服务器没有让SSL支持被启用,则值为Ignored。
          Master_SSL_CA_File: #ssl agent文件ca-cert.pem的文件名,配置文件master-ca选项设置
          Master_SSL_CA_Path: #ssl agent文件ca-cert.pem的路径名,配置文件ca-cert.pem选项设置
             Master_SSL_Cert: #ssl 授权文件,配置文件master-cert选项设置
           Master_SSL_Cipher: #ssl 加密算法,配置文件master-cipher选项设置
              Master_SSL_Key: #ssl 密钥文件,配置文件master-key选项设置
       Seconds_Behind_Master: 0#本字段是从属服务器“落后”多少的一个指示。当从属SQL线程正在运行时(处理更新),本字段为在主服务器上由此线程执行的最近的一个事件的时间标记开始,已经过的秒数。当此线程被从属服务器I/O线程赶上,并进入闲置状态,等待来自I/O线程的更多的事件时,本字段为零。
#总之,本字段测量从属服务器SQL线程和从属服务器I/O线程之间的时间差距,单位以秒计。如果主服务器和从属服务器之间的网络连接较快,则从属服务器I/O线程会非常接近主服务器,所以本字段能够十分近似地指示,从属服务器SQL线程比主服务器落后多少。
#如果网络较慢,则这种指示不准确;从属SQL线程经常会赶上读取速度较慢地从属服务器I/O线程,因此,Seconds_Behind_Master经常显示值为0。即使I/O线程落后于主服务器时,也是如此。换句话说,本列只对速度快的网络有用。即使主服务器和从属服务器不具有相同的时钟,时间差计算也会起作用(当从属服务器I/O线程启动时,计算时间差。并假定从此时以后,时间差保持不变)。
#如果从属SQL线程不运行,或者如果从属服务器I/O线程不运行或未与主服务器连接,则Seconds_Behind_Master为NULL(意义为“未知”)。举例说明,如果在重新连接之前,从属服务器I/O线程休眠了master-connect-retry秒,则显示NULL,因为从属服务器不知道主服务器正在做什么,也不能有把握地说落后多少。本字段有一个限制。时间标记通过复制被保留,这意味着,如果一个主服务器M1本身是一个从属服务器M0,则来自M1的binlog的任何事件(通过复制来自M0的binlog的事件而产生),与原事件具有相同的时间标记。这可以使MySQL成功地复制TIMESTAMP。
#但是,Seconds_Behind_Master的缺点是,如果M1也收到来自客户端的直接更新,则值会随机变化,因为有时最近的M1时间来自M0,有时来自直接更新,最近的时间标记也是如此。
Master_SSL_Verify_Server_Cert: No#是否检查master的授权文件
               Last_IO_Errno: 0#IO thread的上一次出错的错误号
               Last_IO_Error: #IO thread的上一次出错的错误信息
              Last_SQL_Errno: 0#SQL thread的上一次出错的错误号
              Last_SQL_Error: #SQL thread的上一次出错的错误信息
Replicate_Ignore_Server_Ids: #忽略复制服务器ID
            Master_Server_Id: 2#master 主机server ID



运维网声明 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-7931-1-1.html 上篇帖子: mysql.py数据库性能检查(python) 下篇帖子: mysql的读写分离

尚未签到

发表于 2013-8-11 04:06:04 | 显示全部楼层
所有刻骨铭心的爱都灵魂游离于床上的瞬间!

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

尚未签到

发表于 2013-8-22 01:08:14 | 显示全部楼层
学海无涯,回头是岸!

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

尚未签到

发表于 2013-9-6 13:35:14 | 显示全部楼层
只有假货是真的,别的都是假的!

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

尚未签到

发表于 2013-11-4 14:00:56 | 显示全部楼层
学习了,不错,讲的太有道理了

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

尚未签到

发表于 2013-12-28 23:24:48 | 显示全部楼层
硪知道说“SORRY”麽用、但硪又麽勇气说“LOVE”

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

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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