mysql主从和半主从

Mysql主从复制(Mysql主从复制就是为了保障数据的数据安全性和安全性)

MYSQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的管理也就显得非常重要,新手往往在出现主从同步错误的时候不知道如何入手,这篇文章就是根据自己的经验来详细叙述mysql主从的管理。

MYSQL主从同步的作用

(1) 数据分布
(2)
负载平衡(load balancing)
(3)
备份
(4)
高可用性(high availability)和容错

MYSQL主从同步的原理

关于MYSQL的主从同步,最主要的是要了解MYSQL的主从同步是如何工作的也即主从同步的原理,通过下图能很明白的指导其工作的过程:

mysql主从和半主从_第1张图片

大致描述一下过程:从服务器的IO线程从主服务器获取二进制日志,并在本地保存为中继日志,然后通过SQL线程来在从上执行中继日志中的内容,从而使从库和主库保持一致。主从同步的详细过程如下:

1.主服务器验证连接。

2.主服务器为从服务器开启一个线程。

3.从服务器将主服务器日志的偏移位告诉主服务器。

4.主服务器检查该值是否小于当前二进制日志偏移位。

5.如果小于,则通知从服务器来取数据。

6.从服务器持续从主服务器取数据,直至取完,这时,从服务器线程进入睡眠,主服务器线程同时进入睡眠。

7.当主服务器有更新时,主服务器线程被激活,并将二进制日志推送给从服务器,并通知从服务器线程进入工作状态。

8.从服务器SQL线程执行二进制日志,随后进入睡眠状态。

-------------------------------------------------------------------------------------

一:修改主从数据库配置文件的id,

vi /etc/my.cnf

[mysqld]

log-bin=mysql-bin  //[必须]启用二进制日志

server-id=1       //[必须]服务器唯一ID,假设是1,

二:主从复制配置

(1):master上进行操作

Mysql增加权限

Grant 权限 on 数据库.* to 用户名@登陆主机identity by 密码

例子:grant replication slave on *.* to repl@'10.168.10.10' identified by 'password';


(2)查询主数据库的状态:show master status;


mysql主从和半主从_第2张图片

记下File以及Position的值,在后面进行从服务器操作的时候需要使用。

三:配置从服务器

(1)修改从服务器的配置文件/etc/my.cnf

使得“server-id=2”,并确定这个id没有被别的mysql服务所使用。

(2)进入mysql里面,

停掉:stop slave;

重置:reset slave; (reset 用于以前做过主从)

(3)执行同步的sql语句

change master_to master_host = ‘主机号’,master_user=’用户名’

master_pasword=‘密码’,master_log_file=’文件号’,master_log_pos=位置

  例子:

change master to master_host='10.168.102.45',master_user='repl',master_password='cc@snda2014',master_log_file='mysqld-bin.000002',master_log_pos=329;

开启:start slave

就启动了slave同步功能。

(4)主从同步检查

执行如下语句

1mysql>show slave status\G

mysql主从和半主从_第3张图片====================================================================================

mysql半主从

mysql半主从就是,master服务器在运行中再添加slave服务器,其实就是多了一个mysql备份,先把master上面的数据备份出来,导入slave mysql中,再做一下主从

数据库备份mysqldump

mysqldump 导出数据

   a. 只导出表结构

       mysqldump --opt  -d  数据库名 -u 用户名 -p 密码> xx.sql

       如: mysqldump --opt -d shop_data -u root  -p admin >onlystruct_shop_data.sql

   b. 只导出数据

       mysqldump -t  数据库名 -u 用户名-p 密码 > xx.sql

       如: mysqldump --t shop_data -u root  -p admin > onlydata_shop_data.sql

   c. 导出所有数据和结构

       mysqldump 数据库 -u 用户名 -p 密码 > xx.sql

       如: mysqldump shop_data -u root -p admin > shop_data.sql

   d. 导出特定表

       mysqldump  数库 -u 用户名 -p 密码  -B  --table 表名 > xx.sql

       如: mysqldump shop_data -u root -p admin -B --table user > user.sql

默认字体格式  --default-character-set=utf8

导入数据sources

source 导入数据

  source  /home/root/XX.sql   只能用mysql -uroot -padmin 登录后才能使用

如: source  /home/root/test.sql

=====================================================================================

综上所述,mysql主从其实也就是那简单的几步,配置server_id

master机器:

grant replication slave on *.* to repl@'10.168.102.%' identified by 'cc@snda2014';

show master status;

slave机器:

停掉:stop slave;

重置:reset slave

change master to master_host='10.168.102.45',master_user='repl',master_password='cc@snda2014',master_log_file='mysqld-bin.000002',master_log_pos=329;

start slave;


============================================================================

假如做完主从没有成功,从以下三个原因分析和查找,一定能成功

1.slave权限问题

2.帐号密码配置错误

3.查看物理网络是否ok