发布时间:2018-08-17作者:laosun阅读(3843)
博主的电脑是一台mac,一台win7。mac上现安装mysql版本是5.7.23。win7的话我昨天晚上已经下载好了,版本号是:5.7.22。
官方推荐是版本号最好一样,如果真不一样,至少slave的版本要高于master,版本不一致,可能出现的问题就是同步不稳定(兼容性问题)。 这里呢,我们测试,也就无所谓了。
mac电脑: 192.168.1.2 (主服务 master)
win7电脑:192.168.1.3 (从服务 slave)
注意上边的命名,我下边的文章中可能都使用到了,别混了就行。
win7下安装5.7.22的教程我已经发布到:
主从的配置:
master 主mysql配置(mac系统上)
我们去修改my.cnf配置文件。找到server-id 这一行
增加一下配置(配置还有很多,自己去网上了解一下吧):
server-id = 1 ##给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号 log-bin=mysql-bin ##开启二进制日志功能,可以随便取,最好有含义(关键就是这里了) binlog-do-db=d_sunjs_test ##需要同步的数据库名称 binlog_ignore_db=mysql ##过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
然后保存退出,重启mysql服务。
测试: show master status;
如下图所示:
目测没有问题,里边的File、Position以及Binlog_Do_DB都是要用到的。 现在先不管。
slave 从mysql配置(win7系统上)
我们进入mysql的安装目录:C:\Program Files\MySQL\MySQL Server 5.7
发现这个目录下根本没有my.ini文件,好吧,我们自己去创建一个:
[mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #Mysql服务的唯一编号 每个mysql服务Id需唯一 server-id = 3 #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=C:\Program Files\MySQL\MySQL Server 5.7 # 设置mysql数据库的数据的存放目录 datadir=C:\Program Files\MySQL\MySQL Server 5.7\data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB #开启查询缓存 explicit_defaults_for_timestamp=true skip-grant-tables
然后重启mysql服务。
增加mysql用户:
主mysql增加远程访问用户,也就是相当于slave服务可以通过远程访问master,通过该用户读取二进制文件,实现数据的同步。
create user repl;
好了,我们去测试一下,看能否链接上。
在win7 mysql从服务上进行测试:
经过测试,没有问题。
mysql 从服务slave配置链接master的方法:
先退出之前的连接,重新开启一个cmd窗口吧,然后连接master服务
change master to master_host='192.168.1.2',
master_port=3306,
master_user='repl',
master_password='repl123',
master_log_file='mysql-bin.000003',
master_log_pos=0;
启动同步:
start slave;
检测主从同步,如果你看到Slave_IO_Running和Slave_SQL_Running均为yes,则主从复制链接正常:
这里呢,我们的Slave_SQL_Running为no,那么肯定是同步故障的。
我们来看主服务的 show master status;
好吧,我们先停掉从服务slave,
stop slave;
change master to master_host='192.168.1.2',
master_port=3306,
master_user='repl',
master_password='repl123',
master_log_file='mysql-bin.000003',
master_log_pos=797;
start slave;
再来看一下:
没有问题了。
下边进行测试:
先从master上创建一个数据库,命名为d_sunjs_test
create database d_sunjs_test;
如下图所示:
然后我们来看一下win7 上的从服务是否也创建了呢?
测试在master服务中创建一张条,加入一条数据。
CREATE TABLE `d_sunjs_test`.`t_users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
然后insert一条数据
insert into t_users(id,name) values(1,'技术客');
如下图所示:
然后我们来看一下从服务器slave上是否已经同步过来了
截至到目前,mysql的主从配置已经基本完成,至于如何进行参数优化,剩下的就考自己了。
本实例演示的是单向主从同步,如果想双向的话,同理
版权属于: 技术客
原文地址: https://www.sunjs.com/article/detail/472fb84098154f60ac4a0339b2ae4640.html
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。