https://segmentfault.com/a/1190000038420324
主从分离
https://segmentfault.com/a/1190000023775512
一台电脑配置数据库主从(读写分离)
https://blog.csdn.net/u010814849/article/details/110688858
https://blog.csdn.net/wpeishi/article/details/80508179
read lock(读锁):也叫共享锁,允许所有的读操作,但阻塞写操作,即所有连接只可以读数据,但不允许写数据。
write lock(写锁):也叫排它锁、独占锁,只允许当前连接的读和写,不允许其他并发的读操作和写操作。
锁定主服务器的数据库后,我们在从服务器中,也创建一个数据库test,并将所有的表(包括表结构和表数据)都导入。
https://segmentfault.com/a/1190000023775512
2.安装命令行详细步骤
https://blog.csdn.net/u010814849/article/details/110688858
管理员身份打开命令行cmd 否则可能因为权限不足报错
具体步骤如下
2.1.主库Master
管理员权限打开控制台cmd,在mysql解压目录bin下执行以下命令:
2.1.1 初始化:
mysqld --initialize --console
控制台输出初始化root密码 (用slave做的演示)
2.1.2 注册服务
mysqld --install MysqlMaster --defaults-file="F:\dongdong\0tool\mysql\mysql-5.7.35-winx64-master-3309\my.ini"
2.1.3 启动服务
启动和停止服务可以使用如下命令行,也可以通过windows服务管理页面启动和关闭
net start MysqlMaster
2.1.4 连接mysql
密码在初始化的时候控制台会输出 xxx修改成临时密码
mysql -uroot -P3309 -pxxxx
2.1.5 修改密码
alter user 'root'@'localhost' identified by 'admin';
以后新的登陆
刷新权限:
flush privileges;
创建用于同步的用户账号
也可以不创建,使用root,但是网上其他帖子说建议单独创建账号,我这里也没有多深究,就单独创建吧
create user 'dongdong'@'%' identified by 'admin';
grant replication slave on *.* to 'dongdong'@'%' identified by 'admin';
flush privileges;
查看主库状态
show master status;
客户端
管理员权限打开控制台cmd,在mysql解压目录bin下执行以下命令:
3.1 初始化:
mysqld --initialize --console
3.2 注册服务 替换自己的路径
mysqld --install MysqlSlave --defaults-file="F:\dongdong\0tool\mysql\mysql-5.7.35-winx64-slave-3310\my.ini"
3.3 启动服务
net start MysqlSlave
停止服务
net stop MysqlMaster
3.4 连接mysql xxx替换成临时密码
mysql -uroot -P3310 -pxxx
以后修改密码后
mysql -uroot -P3310 -padmin
3.5 修改密码:
alter user 'root'@'localhost' identified by 'admin';
刷新权限
flush privileges;
3.6 创建用于同步的用户账号:
create user 'dongdong'@'%' identified by 'admin';
flush privileges;
3.7 查看从库状态
show slave status;
4.准备开启主从同步
4.1 查看master和slave各自目录 xxx/data/auto.cnf
如果两个文件一致,则修改slave从库的auto.cnf 使得两个库的值不一致
4.2设置从库从哪里同步即设置master
change master to master_host='localhost',master_port=3309,master_user='dongdong',master_password='admin',master_log_file='master-bin.000002',master_log_pos=2073;
参数详解:
master_host: 主服务器的IP
master_user: 主服务器上新创建的用户名
master_password: 用户的密码
master_port: 主服务器的端口,如果未曾修改,默认即可。
master_log_file:主服务器二进制日志文件的名称,填写查看主服务器的master状态时显示的File值
master_log_pos:同步位置
4.3 开始主从同步
start slave;
stop slave;
或者任务管理器打开或者关闭
4.4 检查同步状态
show slave status\G
注意,主从同步成功的标志:
IO线程和SQL线程都是成功运行的:
Slave_IO_Running: Yes Slave_SQL_Running: Yes
以上完成即表示OK
现在可以使用进行测试,master的操作都会同步到从库
5.操作详细步骤截图
5.1 master
少了一步运行 start master;
5.2 slave