MySQL数据库的主从复制简单学习使用
使用主从复制前必须保证从服务器数据表和主服务器数据表一样(包括表,事件,函数等)
主从服务器的MySQL版本最好使用同一个版本,如果不能则主服务器的MySQL版本不得高于从服务器的MySQL版本
首先在主服务器的MySQL中创建一个用户
# 创建一个连接用户repl,授予REPLICATION SLAVE权限.并指定域可连接,密码是
GRANT REPLICATION SLAVE ON . TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'yourpassword';yourpassword
配置主服务器
# Windows打开my.ini Linux/Mac打开my.cnf
# 加入以下值 log-bin = mysql-bin # 使用mysql-bin
文件名保存数据 server-id = 1 # 指定唯一server ID重启主服务器的MySQL,使用
show master status\G
查看状态字段说明:
- File:表示正在使用的binlog文件,以及从服务器从该文件复制数据
- Postion:与binlog文件大小相同,表示下一个被记录事件的位置,以及开始复制的开始位置(row)
- Binlog_Do_DB:两者都是表示主服务器写入binlog文件的内容过滤,为空表示不过滤
- Binlog_Ignore_DB:两者都是表示主服务器写入binlog文件的内容过滤,为空表示不过滤
配置从服务器, 并重启
# 配置文件同4
# 加入以下内容 log-bin = mysql-bin server-id = 2指定主服务器信息(CHANGE MASTER TO)
# MASTER_LOG_POS=0因为要从日志的开始位置开始读
CHANGE MASTER TO MASTER_HOST='192.168.1.10',MASTER_USER='repl',MASTER_PASSWORD='yourpassword',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=0;
使用`show slave status\G'查看连接信息
开始复制主服务器数据
start slave
主服务器可以使用
show processlist
查看连接信息
- 首先是主服务器将用户对数据库的更新操作以二进制格式保存到Binary Log日志文件中,然后由Binlog Dump线程将Binary Log日志文件传输到从服务器
- 从服务器通过I/O线程将主服务器的Binary Log日志文件中的更新操作复制到Relay Log的中继日志文件中,再通过SQL线程将Relay Log中继日志文件中的操作依次在从服务器执行,从而实现数据同步.
- 常用命令记录
- 查看主服务器状态:show master status
- 查看从服务器状态:show slave status
- 开始复制:start slave
- 查看连接信息:show processlist
- 新建一个从服务器连接用户: CHANGE MASTER TO MASTER_HOST='192.168.1.10',MASTER_USER='repl',MASTER_PASSWORD='yourpassword',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=0;
- more...