最近在给学生讲解数据库的主从配置,由于学生电脑里面装的虚拟机是linux的,但是本机的系统是windows的,所以需要用windows中的mysql与linux中的mysql进行主从配置。下面说一下主要步骤:
如果将windows中的当主机,那么配置如下(如果linux中的当主机,那么反过来配置就行):
Windows中的主机配置:
1. 首先,找到windows中mysql的配置文件路径。
使用主机的root用户登录mysql,然后在命令行输入:select @@basedir;显示的结果即为mysql配置文件的路径,找到该路径,如果有my.ini文件那么此文件即为配置文件,如果没有就创建一个。
2. 创建一个新用户用来远程连接使用:
例如此处:create user 'abc'@'%' IDENTIFIED BY '123456'
3. 授权
例如此处:GRANT ALL ON test1.* TO 'abc'@'%';
(此处假设test1数据库设置为主从配置的数据库)
4. 修改my.ini文件
在[mysqld]模块中添加以下配置:
[mysqld]
server-id = 1
log_bin = (此处写my.ini所在的文件夹路径)/mysql-bin.log
binlog_do_db = test1
binlog_ignore_db = mysql
5. 授予从机复制表权限
例如此处:GRANT REPLICATION SLAVE ON *.* TO 'abc'@'%' IDENTIFIED BY '123456';
6. 在windows的服务中重启mysql
7. 重新使用root用户登录Mysql,执行如下sql:
master status;
显示结果如下:
+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+
| mysql‐bin.000001 | 154 | test1 | mysql |
+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+
1 row in set (0.00 sec)
记住此处的file名称和position。
Linux中的从机配置:
1. 修改MySQL配置文件
sudo vi /etc/mysql.conf.d/mysqld.cnf
在[mysqld]中添加:
server‐id = 2
relay‐log = slave‐relay‐bin
relay‐log‐index = slave‐relay‐bin.index
2. 重启Slave从服务器MySQL,命令:
sudo /etc/init.d/mysql restart
3. 登录Slave从服务器,连接Master主服务器 输入以下命令:
change master to master_host = '47.93.193.110', master_port=3306, master_user='abc', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=154;
备注:master_host对应主服务器的外网IP地址,master_port对应主服务器的端口(3306),master_log_file对应show master status显示的File列:mysql‐bin.000001,master_log_pos对应Position列:154,否则有可能出现同步失败。
4. 重启mysql服务器。
5. 登录MySQL状态下,启动Slave数据同步。
start slave;
6. 最后可以查看下状态:
show slave status;