背景
项目服务端需要快速启动应急方案,数据服务器挂掉后的切换是其中的一环,所以就有了主从数据库这一说法。说人话就是,主数据服务器挂了,你可以通过修改一些配置,让从数据库服务器接着卷。
方案
1.最好两台电脑【一台电脑,里边装了虚拟机也是类似的】,各自安装好mysql数据库【同一版本】,双方有一开始有一样的数据结构和数据值。
2.主数据库服务器的配置文件my.ini【一般位于这个路径(C:\ProgramData\MySQL\MySQL Server 8.0)修改了的话,你自己慢慢找吧】
打开配置文件,将里边的
log-bin="WIN-TU1PNIS7N0I-bin"
# binlog_format
修改为
log-bin="Mysql-bin"
binlog_format
3.从数据库服务器的配置文件my.ini里边
log-bin="WIN-A7KSNIMJJ28-bin"
server-id=1
修改为
log-bin="skip-log-bin"
server-id=2
4.用命令行【管理员】方式登录mysql服务器
mysql -u root -p
5.主机操作。 在主机上创建从机访问主机用户的用户名和密码,并指定该用户只能在从机上登录(通过指定从机的IP地址)。其中@分割的两个字符串分别为用户名和从机地址【具体地址和用户名需要你根据自己实际生产环境进行修改】,最后一个字符串为密码。
CREATE USER 'slave1'@'192.168.3.206' IDENTIFIED WITH mysql_native_password BY '12345';
为上面创建的slave1用户赋予REPLICATION SLAVE权限(及主从机同步操作权限)。
GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'192.168.3.206';
主机加只读锁
FLUSH TABLES WITH READ LOCK;
在主机上确认当前主从机同步位置信息
SHOW MASTER STATUS;
执行这条命令后,数据库会返回如下格式信息,请注意它们,后面要用
Mysql-bin.000002 3863
主机释放锁
UNLOCK TABLES;
6.从机操作。
先管理员方式命令行登录mysql
mysql -u root -p
在从机上停止主从机同步功能
STOP SLAVE;
在从机上设置当前主从机同步位置信息【注意,这里的每个字段的值都跟前面的设置有关,可别直接复制我的代码就撒手不管了哈】
CHANGE MASTER TO
-> MASTER_HOST='192.168.3.178',
-> MASTER_USER='slave1',
-> MASTER_PASSWORD='12345',
-> MASTER_SSL=1,
-> MASTER_LOG_FILE='Mysql-bin.000002',
-> MASTER_LOG_POS=3863;
在从机上开始主从机同步功能
START SLAVE;
7.重新开启两个电脑的mysql服务。
8.尝试在主机的一个表中添加一条字段,再看从机里边对应表是否也添加了该字段,这个速度还是蛮快的,如果没有添加,说明你的步骤出现问题了,具体啥问题,问度娘吧。