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;
从服务器的操作和前面的步骤一样,略过。