7.如何实现了mysql的主从复制呢?
0.创建3307目录,并初始化数据库
./mysqld --initialize-insecure --basedir=/usr/local/software/mysql-5.7.18 --datadir=/usr/local/software/mysql-5.7.18/data/3307 --user=mysql
1.先配置my.cnf文件,将一个数据库设置成主数据库。
log-bin=mysql-bin #设置数据为主数据库
server-id=3307 #设置数据库的id,这里我们使用的是端口号,真是环境我们使用的是ip(去点)
2.启动数据库服务,并进入数据库
./mysqld_safe --defaults-file=/usr/local/software/mysql-5.7.18/data/3307/my.cnf &
./mysql -uroot -p -P3307 -h127.0.0.1
注意:我们这里使用的是多实例模式,所以不管是启动服务端,还是就如客户端需要指定启动文件与端口。-h127.0.0.1不能省略,要不然后启动的会不一样。
3.然后给主数据添加一个用户copy,使其具有操作数据库的能力。
alter user 'root'@'localhost' identified by '123123';设置mysql的密码,因为我们启动的时候没有设置密码
grant all privileges on *.* to root@'%' identified by '123123'; #设置可以远程访问
grant replication slave on *.* to 'copy'@'%' identified by '123123';
4.在从数据库中,指定他的主数据库
change master to master_host='192.168.159.128',master_user='copy',
master_port=3307,master_password='123123',
master_log_file='mysql-bin.000001',master_log_pos=154;
这里面指定了主数据库的ip地址与端口,以及操作数据库的用户copy,还有主数据库的密码。
然后还制定了数据库的二进制文件,以及二级制文件的偏移量154.
5.在从数据库中开启slave。注意看slave的io线程与sql线程有没有启动。
start slave;
6.常用命令:
1)start slave;
2) stop slave;
3)reset slave;#重置slave我们需要先关闭slave
4) show slave status G; #标准查看slave的相关信息。
5)show master status;
6) reset master;
6)./mysqladmin -uroot -p -P3307 -h127.0.0.1 shutdown; #关闭数据库服务端
其实整整的mysql主从复制,其实就只有三步:
1.更改配置my.cof配置文件,主从数据库都要更改。
2.主数据库中创建一个copy用户,并重置master。
3.从数据中进行关联主数据库,并启动slave进程。
值得注意一点的是,我们在设置两个主数据库的时候,需要在主配置文件中添加主键自增为2
auto_increment_increment=2 #主键自增单位是2
auto_increment_offset=1 #不一样的点 相当于起始值
log-slave-updates #将同步过来的数据也放到二进制文件。
sync_binlog=1 #每提交一次事务,就放到二进制文件