Mysql学习笔记-复制

来源:互联网 发布:mac 分区后找不到磁盘 编辑:程序博客网 时间:2024/06/05 21:56
mysql复制
1:创建复制账号并授予权限
grant replication client on *.* to dba_copy@'192.168.1.%' identified by 'dba_copy';
grant replication slave on *.* to dba_copy@'192.168.1.%' identified by 'dba_copy';
flush privileges;
具体知识百度mysql账号,mysql权限

2:配置主数据库与从数据库

主数据库配置:
#二进制复制文件名称
log_bin = master-mysql-log
#数据库唯一ID,建议使用IP地址
server_id = 254

从数据库配置:
#二进制复制文件名称
log_bin = slave1-mysql-log
#数据库唯一ID,建议使用IP地址
server_id = 253
#中继日志存放地址
relay_log = /mysql/data_dir/mysql-relay-log
#是否将中继日志的操作存放入本地日志
log_slave_updates = 1
#只能读权限
read_only =1

重新启动主从数据库

3:启动复制

备库上操作备库连接到主库并重放二进制日志
change master to
master_host = '192.168.1.254',
master_user = 'dba_copy',
master_password = 'dba_copy',
master_log_file = 'master-mysql-log.000002',
master_log_pos = 0;
解释:
master_host:主数据库IP地址
master_user:主数据库具有replication slave权限的账号
master_password:账号密码
master_log_file:主数据库二进制日志文件名称
master_log_pos:从二进制文件什么位置开始复制



备库开始复制
start slave;

4:其他

查看主数据库主从关系信息
show master status;

查看从数据库主从关系信息
show slave status;

异常:Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
处理:show variables like '%server_uuid%';
将主从数据库的server_uuid修改为不一样的UUID即可。
修改地址:datadir下的auto.cnf

查看数据库所有连接
SHOW PROCESSLIST;

数据库偏移量
show master status;中显示的position值,备库可以用此值指定备库开始复制的位置。

从已经运行的数据库中进行主从配置
如果主数据库服务器已经存在用户数据,那么在进行主从复制时,需要做以下处理。
(1)主数据库锁表操作,不让数据再进行写入动作。
flush tables withread lock;    
(2)查看主数据库的状态
show master status;    
记下File以及Position的值,以备从服务器使用。
(3)手动导入主数据库数据
(4)取消主数据库锁定
unlock tables;    
从服务器的操作和前面的步骤一样,略过。

0 0