mysql主从和半主从
Mysql主从复制(Mysql主从复制就是为了保障数据的数据安全性和安全性)
MYSQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的管理也就显得非常重要,新手往往在出现主从同步错误的时候不知道如何入手,这篇文章就是根据自己的经验来详细叙述mysql主从的管理。
MYSQL主从同步的作用
(1) 数据分布
(2) 负载平衡(load balancing)
(3) 备份
(4) 高可用性(high availability)和容错
MYSQL主从同步的原理
关于MYSQL的主从同步,最主要的是要了解MYSQL的主从同步是如何工作的也即主从同步的原理,通过下图能很明白的指导其工作的过程:
大致描述一下过程:从服务器的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;
记下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半主从
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