先来看看主从复制的数据走向,大致意思是主数据库新增的数据会自动同步到从数据库中
MySQL主从复制允许将来自一个数据库(主数据库)的数据复制到一个或多个数据库(从数据库)。
主数据库一般是实时的业务数据写入和更新操作,从数据库常用的读取为主,从而实现数据库读写分离。
大致过程
1、主服务器上面的任何新增修改都会通过自己的 I/O tread(I/O 线程)保存在二进制日志里面。
2、从服务器上面也启动一个 I/O thread,通过配置好的用户名和密码, 连接到主服务器上面请求读取二进制日志,然后把读取到的二进制日志写到本地的一个log(中继日志)里面。
3、从服务器上面同时开启一个 SQL thread 定时检查 Realy log(这个文件也是二进制的),如果发现有更新立即把更新的内容在本机的数据库上面执行一遍。
主从复制步骤开始
主数据库:
1.新建一个test的数据库
2.配置my.ini文件 文件路径在C:\ProgramData\MySQL\MySQL Server 5.7 下,弄了半天才发现my.ini是在ProgramData下的mysql中,而mysql安装路径中没有my.ini只有my-default.ini(这是一个坑)
3.把my.ini中的注释打开,分别是:
# logbin日志必须开启,配置要复制的数据库'test'
log-bin
binlog_do_db=test
# Server Id. 主数据库的服务ID
server-id=1
4.重启mysql服务,在Windows中点服务找到mysql,点击重启
5.创建主从同步用的账号
在mysql安装路径下的bin文件夹执行cmd(管理员)
输入下边的命令
mysql -uroot -p
输入自己的数据库密码
然后执行创建用户命令
mx 为登录账号
172.16.41.36 为从库的IP地址
123456 为账号的密码
CREATE USER 'mx'@'172.16.41.36' IDENTIFIED BY '123456';
授予权限
GRANT REPLICATION SLAVE ON *.* TO 'mx'@'172.16.41.36';
刷新权限
FLUSH PRIVILEGES;
6.查看Master状态,记录二进制文件名和位置
show master status;
文件名为jinxiao-sd-bin.00003 位置是4024
至此主数据库设置完毕
从数据库(操作与主数据库配置类似,有不懂的可参考主数据库配置)
创建测试数据库“test”
配置my.ini文件(设置server-id和log-bin日志跟主数据库配置类似,唯一不同的是server-id不能相同)
重启mysql服务
cmd命令行登陆MySQL数据库(与主数据库操作一样),执行下面命令进行同步
CHANGE MASTER TO MASTER_HOST='172.16.41.36',MASTER_PORT=3306,MASTER_USER='mx',MASTER_PASSWORD='123456',MASTER_LOG_FILE='jinxiao-sd-bin.000003',MASTER_LOG_POS=4024;
其中:
MASTER_HOST='172.16.41.36' 为主数据库IP
MASTER_PORT=3306 为主数据库端口号
MASTER_USER='mx' 为主数据库设置的账号
MASTER_PASSWORD='123456'为主数据库设置的密码
MASTER_LOG_FILE='jinxiao-sd-bin.000003' 为主数据库的二进制日志文件
MASTER_LOG_POS=4024; 为数据库二进制文件的位置
5.启动salve同步进程
start slave;
完成,可查看slave状态
show slave status\G
Slave_IO_Running: Yes,
Slave_SQL_Running: Yes
时说明两个线程已启动,主从复制配置成功。
标签: MySQL
评论列表
666