重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
17mysql复制
=================
使用mysql复制的好处
避免主库故障后无法对外提供服务
避免主库备份时的锁定,同步后备份再丛库上进行
保持多份数据副本,避免丢失数据
丛库提供读功能,分散主库压力
基本原理:
主库丛库经过初始化保证数据相同后主库通过二进制日志保持对数据库变化的跟踪
从库根据相同的日志重演主库中数据的变化
---------
配置:
第一步:
授权从库可以连接主库并进行更新
这个可以在主库上进行,方法是创建一个从库的账户也可以使用grant replication
grant replication slave on *.* to repadmin@slave identified by 'xxxxx';
第二步:
从主库复制到从库,实际上就是初始化,保证两边一致
第三步:
配置主库,给主库一个复制id编号,主从的id号都必须是唯一的
同时需要设定主库使用二进制日志文件
server-id=1
log-bin=binary_log
第四步:
关机并重启主库,使新的设置生效
第五步:
登录从库,给定从库一个复制id编号并修改其他参数
server-id=2
master-host=master
master-user=repadmin
master-password=xxxxx
第六步:
修改完从库后重启从库和服务器,使其生效
从库将在数据目录中创建master.info文件,记录有关复制的信息
-------------
管理复制过程
change master命令
change master to
master_host='master_name',
master_user='slave_name',
master_password='slave_password',
master_port='prot_number',
master_log_file='binlog_filename',
master_connect_rettry='value',
relay_log_file='relaylog_filename',
relay_log_pos='value';
各个参数含义:
master_host 主服务器主机名
master_user 连接主服务器时使用的用户名
master_password 连接主库使用的密码
master_port 连接主库使用的端口
master_log_file 复制开始时读取的主库的二进制日志文件名
master_log_pos 复制开始时读取的主库的二进制日志文件的位置
master_connect_rettry 连接操作之间等待的秒数
relay_log_file 开始复制时执行的从库中继日志名
relay_log_pos= 开始复制时执行的从库中继日志位置
--------
purge master命令
删除主库上的热进制日志
purge master logs to binary-log
purge master logs before date
例:
mysql>purge master logs to bin_log.999;
mysql>purge master logs to now();
-------
start slave命令
开始恢复复制
show slave status可以监督从库的活动
---------
stop slave命令
终止或者结束复制
show slave status提供的信息
connect_regry 试图连接主库的次数
read_master_log_pos 主库二进制日志的位置
relay_log_file 当前中继日志文件
relay_log_pos 当前中继日志文件位置
relay_log_space 所有中继文件的大小
----------
show slave hosts命令
server_id 从库的复制id
master_id 主库的复制id
host 从库的主机名
port 从库的连接端口
----------
show processlist
state 包含有关服务器正在处理内容的信息
db 线程数据库
command 线程执行的当前语句
time 线程执行的时间
----------
load data from master
从库从主库中获取数据
但是有有些限制,
-----------
show binlog events
显示日志事件
log_name 二进制文件名
pos 日志中事件的位置
event_type 事件类型
------------
show master status
file 二进制更新日志文件名
position 在主库正在写的二进制日志中的当前位置
binlog_do_db 二进制更新日志中记录的数据库列表
binlog_ignore_db 二进制更新日志中忽略和没有记录的数据库列表