mysql主从配置详细步骤(测试成功)
mysql主从配置
相关的理论知识大家可以网上找一下,我这里主要从实战的配置来介绍mysql主从配置,查询了很多资料,也测试了很多遍,最后自己整理出这份能成功mysql主从的配置步骤。
环境介绍和说明
由于测试的环境是在windows服务器上测试的,所以整个环境配置按windows来配置,linux的也差不多,可以相应修改一下即可。2台服务器都是新装的系统,操作会一步一步按标准来进行。
主库和从库操作系统:win 2012 主库和从库版本:mysql-5.7.23-winx64 主库的IP地址:192.168.18.82 从库的IP地址:192.168.18.83 主从的端口:3306
数据库安装
数据库安装
上mysql官网下载数据包版本mysql-5.7.23-winx64,然后解压到D盘;配置环境变量path(;D:\mysql-5.7.23-winx64\bin);安装vcredist_x64(好像一个xxx120.dll之类的)。主从数据库都一样
主数据库配置
在主数据库D:\mysql-5.7.23-winx64根目录下建一个my.ini的文件。内容:
[mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 ###这里设置字符集,用了一段时间报错,现在我默认注释了 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=D:\mysql-5.7.23-winx64 # 设置mysql数据库的数据的存放目录 datadir=D:\mysql-5.7.23-winx64\data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB default_password_lifetime=0 ##设置服务器ID,必须保持唯一性 server-id=1 ##设置需要写bin日志的数据库,多个数据库则要多行分别设置binlog-do-db=test##设置不需要写bin日志的数据库,多个数据库则要多行分别设置 #binlog-ignore-db=mysql#binlog-ignore-db=information_schema##注:binlog-do-db, binlog-ignore-db 为互斥关系,只需设置其中一项即可; ##更要注意binlog-do-db库的SQL不能有操作binlog-ignore-db库的语句或动作,否则报错##日志模式binlog-format=row##二进制日志文件存放位置,可以设置路径;也可以不设置,此时存放到log-bin=D:/mysql-5.7.23-winx64/data/test-binlog
上面的内容只需要根据自己配置的数据把 binlog-do-db=test和 log-bin=D:/mysql-5.7.23-winx64/data/test-binlog中的test数据库改成自己的数据库名即可,其他不需要改动。
然后打开 cmd进入到主数据库bin目录下进行配置:
mysqld --initialize --user=mysql --console #初始化并创建data文件夹;mysqld --install #安装数据库并检查是否成功;net start mysql #启动mysql数据;mysql -u root -p #进入数据库;
set password=password('root') ; #更改root的密码为rootCREATE USER 'abc'@'192.168.18.83' IDENTIFIED BY '123456'; #创建用户abc,密码是123456GRANT REPLICATION SLAVE ON *.* TO 'abc'@'192.168.18.83';#分配权限; flush privileges; #刷新权限CREATE DATABASE test; #创建test数据库show master status; #查看master状态,记录二进制文件名
主库配置完成,先放着,别关闭,等下从库配置需要用到二进制文件名和POS端口
从数据库配置
在从数据库D:\mysql-5.7.23-winx64根目录下建一个my.ini的文件。内容:
[mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 ###这里设置字符集,用了一段时间报错, 现在我默认注释了 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=D:\mysql-5.7.23-winx64 # 设置mysql数据库的数据的存放目录 datadir=D:\mysql-5.7.23-winx64\data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB default_password_lifetime=0 ##设置服务器ID,必须保持唯一性 server-id=2 ##设置需要写bin日志的数据库,多个数据库则要多行分别设置 replicate-do-db=test ##设置不需要写bin日志的数据库,多个数据库则要多行分别设置 replicate-ignore-db=information_schema replicate-ignore-db=mysql replicate-ignore-db=performance_schema replicate-ignore-db=sys
上面的内容只需要根据自己配置的数据把 replicate-do-db=test中的test数据库改成自己的数据库名即可,其他不需要改动。
然后打开 cmd进入到主数据库bin目录下进行配置:
mysqld --initialize --user=mysql --console #初始化并创建data文件夹;mysqld --install #安装数据库并检查是否成功;net start mysql #启动mysql数据;mysql -u root -p #进入数据库;
set password=password('root') ; #更改root的密码为rootCREATE DATABASE test; #创建test数据库 change master to master_host='192.168.18.82', #主数据库地址 master_user='abc', #用户 master_password='123456', #密码 master_log_file='test-binlog.000002', #主数据库生成的log文件名 master_log_pos=1172; #主数据库生成的log_pos start slave; # 启动从数据库 show slave status \G; #查看从库状态
当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了。接下来就可以进行一些验证了,比如在主master数据库的test数据库的一张表中插入一条数据,在slave的test库的相同数据表中查看是否有新增的数据即可验证主从复制功能是否有效。