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

[经验分享] Centos6.5基于MariaDB10.x 主从复制高可用简单详解

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2015-4-13 08:30:54 | 显示全部楼层 |阅读模式
主从复制目的:mysql服务器稳定性提升,避免单台mysql服务器宕机后影响整个业务,当出现宕机问题后,可以立即可使从机提升为新的主服务器。从而实现sql高可用冗余性。

一、演示环境
os:centos6.5
sql:mariadb-10.0.12
iptables off
selinux disabled
已装组件:
Development tools
Server Platform Development
主机master:10.19.90.197
从机slave:10.19.90.111

二、(注:sql安装不演示,另外我这里演示的数据库版本一致的)
master服务器配置:
1、停止服务
1
# /etc/init.d/mysqld stop



2、修改mysql配置文件,/etc/my.cnf,我这里仅修改了两项参数,如图所示,一个是mysql日志路径,一个是server-id为1
wKiom1UqaAvj_n6_AAGjCSjo0C4625.jpg
3、创建binlog目录,修改属组
1
2
# mkdir -pv /mydata/binlogs/
# chown -R mysql:mysql /mydata/binlogs/



4、启动mysql服务,查看启动信息
1
# /etc/init.d/mysqld start



wKioL1Uqas6xyrrzAAEz9NPQLkc242.jpg 5、登录mysql 授权远程用户
1
2
3
MariaDB [(none)]> grant replication slave,replication client on *.* to '用户'@'10.19.90.111' identified by '密码';    //注:用户密码必须是当前sql已创建的用户及密码

MariaDB [(none)]> flush privileges;   //刷新MySQL的系统权限相关表




slave服务器配置:
1、停止服务
1
# /etc/init.d/mysqld stop



2、修改mysql配置文件,/etc/my.cnf,我这里仅修改了两项参数,如图所示,一个是启用mysql中继日志路径,一个是server-id为2
wKiom1UqayOBUdMuAADbvLtDRy4313.jpg
3、创建binlog目录,修改属组
1
2
# mkdir -pv /mydata/binlogs/
# chown -R mysql:mysql /mydata/binlogs/



4、启动mysql服务,查看启动信息
1
# /etc/init.d/mysqld start



5、连接mysql,查看中继日志状态:
(注:中继日志:它其实跟复制相关的,与二进制日志几乎相同,只不过它不是用于记录事件的,而是作为读取数据的源并且在本地执行的,当然中继日志是在从服务器上)
wKioL1UqbbGCjvEvAAJR3q6MHOU033.jpg
6、查看验证(此时没有文件)

1
# ls /mydata/relaylogs



7、登录mysql 授权远程用户
1
2
3
MariaDB [(none)]> grant replication slave,replication client on *.* to '用户'@'10.19.90.197' identified by '密码';    //注:用户密码必须是当前sql已创建的用户及密码

MariaDB [(none)]> flush privileges;   //刷新MySQL的系统权限相关表




三、查看master、slave节点状态及启用slave节点
wKiom1UqbunBpekKAANwS9Sy0us186.jpg
2、maser查看日志状态:
wKiom1Uqc3yDzmZqAAEWlh3-y44770.jpg
3、slave节点查看同步状态(注:配图是已经同步中的状态,实际刚创建完毕,Slave_IO_Running: No,Slave_SQL_Running: No,主要就是看这两项参数)
wKiom1Uqc-rR9dNlAAP5JCRVh-E752.jpg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
注:show slave status 解释  

MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.19.90.197
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000002
          Read_Master_Log_Pos: 609
               Relay_Log_File: relay-bin.000006
                Relay_Log_Pos: 818
        Relay_Master_Log_File: master-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
      
SHOW SLAVE STATUS会返回以下字段:
Slave_IO_State
SHOW PROCESSLIST输出的State字段的拷贝。SHOW PROCESSLIST用于从属I/O线程。如果线程正在试图连接到主服务器,正在等待来自主服务器的时间或正在连接到主服务器等,本语句会通知您

Master_User
被用于连接主服务器的当前用户。

Master_Port
当前的主服务器接口。

Connect_Retry
–master-connect-retry选项的当前值

Master_Log_File
I/O线程当前正在读取的主服务器二进制日志文件的名称。

Read_Master_Log_Pos
在当前的主服务器二进制日志中,I/O线程已经读取的位置。

Relay_Log_File
SQL线程当前正在读取和执行的中继日志文件的名称。

Relay_Log_Pos
在当前的中继日志中,SQL线程已读取和执行的位置。

Relay_Master_Log_File
由SQL线程执行的包含多数近期事件的主服务器二进制日志文件的名称。

Slave_IO_Running
I/O线程是否被启动并成功地连接到主服务器上。

Slave_SQL_Running
SQL线程是否被启动。

Replicate_Do_DB,Replicate_Ignore_DB
使用–replicate-do-db和–replicate-ignore-db选项指定的数据库清单。

Replicate_Do_Table,Replicate_Ignore_Table,Replicate_Wild_Do_Table,Replicate_Wild_Ignore_Table
使用–replicate-do-table,–replicate-ignore-table,–replicate-wild-do-table和–replicate-wild-ignore_table选项指定的表清单。

Last_Errno,Last_Error
被多数最近被执行的查询返回的错误数量和错误消息。错误数量为0并且消息为空字符串意味着“没有错误”。如果Last_Error值不是空值,它也会在从属服务器的错误日志中作为消息显示。

更多相关请参考:http://zhumeng8337797.blog.163.com/blog/static/10076891420115732244591/
或自行google,关键词:“show slave status”



4、启动slave同步连接服务:
1
2
3
MariaDB [(none)]> start slave
    -> ;
Query OK, 0 rows affected, 1 warning (0.00 sec)



5、slave节点验证文件查看:

wKioL1Uqd3iypXKwAABw3Y0Dw5A193.jpg
6、slave节点同步状态查看:
wKiom1UqdnWCNicjAACuo9OLgaY181.jpg

四、master创建库,测试slave是否同步,这几步操作不在进行演示,大家自己去试试就OK,很简单、
五、我这里讲下,mysql主从同步,如何同步已有的数据。

问题:原本197这台服务器最开始是单项sql服务器,刚才创建的主从同步,不能同步之前的库和数据,下面我给大家讲下这个问题。

解决方法:
主机开两个shell窗口,一个进入mysql,一个是shell
1、master 主机阻断写操作
1
2
MariaDB [(none)]>  FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)




1
2
3
4
5
6
MariaDB [zentao]> show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000002 |     2040 |              |                  |
+-------------------+----------+--------------+------------------+



2、另一个shell导出master主机相应的数据库
1
mysqldump -u root -p --opt -R zentao > /opt/zento-0412.sql



3、解锁刚才的锁定
1
MariaDB [(none)]>  UNLOCK TABLES;



4、同步导出的数据
1
scp /opt/zentao-0412.sql root@10.19.90.111:/opt/



5、slave主机
停止slave
1
2
MariaDB [(none)]> stop slave;
Query OK, 0 rows affected (0.03 sec)



6、创建mysql库
1
create database zentao;



7、导入数据
1
mysql -uroot -p'密码' zentao < /opt/zentao-0412.sql



8、从启slave
1
2
MariaDB [(none)]> reset slave;
Query OK, 0 rows affected (0.00 sec)



六、验证
登录:master数据库连接的web端,后台创建一个新用户,如下:
wKioL1UqhPrjJAynAADXMlA4XlY181.jpg


登录master数据库查看 user表 是否有数据写入;

wKioL1UqhZaB3XDiAAFZsmBMkyQ007.jpg
登录slave数据库查看对应的表是否有数据同步过来;
我这里已同步了 ,懒得写了,累死我了。。。。。。

特别注意注意:估计有人创建后同步数据库时,比如主库创建一条数据同步没事,但是修改一条数据无法同步,重启slave  在show slave status,会看到Last_SQL_Error:1062  报错 ,这里请修改从库的my.cof配置文件,在里面加上
slave-skip-errors = 1062 、在查看,数据就同步过来了,去掉配置里的slave-skip-errors = 1062,重启数据库,在更新主库表,在查看从库对应的数据,一切正常。OK,就这样。麻痹累死我了。。。。。。。


ps:高可用脚本过两天写出来放上

运维网声明 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.iyunv.com/thread-56469-1-1.html 上篇帖子: MySQL级联+双主方案 下篇帖子: MySQL配置简述 服务器 master 稳定性 数据库 mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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