十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
相关的理论知识大家可以网上找一下,我这里主要从实战的配置来介绍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的密码为root
CREATE USER 'abc'@'192.168.18.83' IDENTIFIED BY '123456'; #创建用户abc,密码是123456
GRANT 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的密码为root
CREATE 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库的相同数据表中查看是否有新增的数据即可验证主从复制功能是否有效。