由于mysql的数据库性能问题以及mysql数据库安全,mysql主从复制在我们的应用中常常被使用。mysql的主从复制是为读写分离的前提条件。
首先准备好两个mysql数据库。这里准备了两台mysql数据库,主数据(master)端口是3306,从数据库(slave)是3307。
Ø修改主数据库(master)的配置文件
找到master的配置文件my.ini配置文件,配置如下:
[mysqld]
#设置3306端口
port = 3306
#server-id和log-bin必须设置
#设置master的serverid
server-id=1
#要生成的二进制日记文件名称
log-bin =mysql-bin
#要同步的数据库
binlog-do-db=test1
#不同步的数据库,如果指定了binlog-do-db这里应该可以不用指定的
#binlog-ignore-db=test1
Ø在master中添加一个mysql主从复制需要的账号
#添加账号授权
grant replicationslave,reload,super on *.* to
slave12@'localhost'identified by 'slave12';
#刷新配置
flush privileges;
Ø查看master的status
在mater的连接库下面,输入show master status,运行查看主数据库的状
态,如下
Ø修改从数据库slave的my.ini配置文件
找到slave的配置文件my.ini配置文件,配置如下:
#"server-id必须有且不能和其他master或slave重复"
port=3307
server-id = 12
replicate-do-db = test1
#log-bin =mysql-bin
#binlog-ignore-db =mysql #不备份的数据库
#binlog-ignore-db =information_schema
#binlog-ignore-db = performation_schema
#binlog-ignore-db = sys
#log-slave-updates = 1
#read_only = 1
Ø从slave库连接master数据库
进入slave数据库,即3307的数据库。执行下面代码
#停止从服务
stop slave;
#修改主服务配置信息
CHANGE MASTER TO
#主服务地址
MASTER_HOST='localhost',
#主服务端口
MASTER_PORT=3306,
#主服务同步账号
MASTER_USER='slave12',
#主服务同步密码
MASTER_PASSWORD='slave12',
#主服务日志文件,主服务执行show master status的file参数
MASTER_LOG_FILE='mysql-bin.000004',
#主服务日志站点,主服务执行show master status的position参数
MASTER_LOG_POS=120;
#启动服务
start slave;
Ø测试主从同步
在主服务器的test1库下,加入一张表userinfo,并插入一条数据,再看从库的变换情况。
#"以下操作都是在master库进行"
#"创建需要同步的库test1"
create database test1;
#"创建一个userinfo表"
create table userinfo(id int(10) not nullprimary key,name varchar(10),age int(3));
#"向userinfo表插入1条数据"
insert into userinfo(id,name,age) values(1,'张三',18);
#"进入从库会发现从库已经有demodb数据库userinfo表中已经同步了"
然后测试从表加入数据时,再次查看主表和从表的变化
#向从库的userinfo表插入一条数据
insert into userinfo(id,name,age) values(1,'李四',18);
总结:由上图的几种情况,可以看到主从复制的效果,主表的改变将影响从表的变化,但是从表的变化不会影响主表的变化。
领取专属 10元无门槛券
私享最新 技术干货