主从复制的配置
首先将mysql5.6.x官网地址,百度下载单击下载下来,安装注意(mysql中数据存放目录),后启动正常,在计算机服务中关闭mysql程序,该副本作为master库。
然后将mysql安装文件夹复制一份作为slave库。修改mysql中数据存放目录中的my.ini
1、 master和slave库中
[mysqld]节点下加上(5.6版本以上需要)explicit_defaults_for_timestamp=true。
否则启动失败如下图:
2、修改port与master不同即可,注意有两个port需要修改
3、修改server-id 与master不同即可
4、修改datadir的值,为复制的slave的目录地址。
然后
1、启动主库:
mysqld--defaults-file=" mysql中master数据存放目录\my.ini"
启动备库:
mysqld--defaults-file=" mysql中slave数据存放目录\my.ini"
2、 登录mysql客户端:
创建备库专用的连接账户和密码
grant replication slave on *.* to 'backup'@'slave的ip' identified by 'backup';
3、 查看主库状态:show master status;有一个file、position两个值需要记住后面要用。
4、 接下来就是让slave连接master,并开始重做master二进制日志中的事件。master_log_file的值为上面的file值;master_log_pos为position的值。
change master to master_host='192.168.10.56',master_user='backup',master_password='backup',master_log_file='ZHAOPAN-PC-bin.000004',master_log_pos=764;
5、 启动slave: start slave;
6、 查看slave状态:show slave status\G;
其中若未先执行 start slave,则Slave_IO_State, Slave_IO_Running, 和Slave_SQL_Running是No。表明slave还没有开始复制过程。
然后就可以测试了。
从库只读的配置
对于需要保证master-slave主从同步的salve库,如果要设置为只读状态,需要执行的命令为:
set global read_only=1;
read_only=1只读模式,可以限定普通用户进行数据修改的操作,但不会限定具有super权限的用户(如超级管理员root用户)的数据修改操作。
在MySQL中设置read_only=1后,普通的应用用户进行insert、update、delete等会产生数据变化的DML操作时,都会报出数据库处于只读模式不能发生数据变化的错误,
但具有super权限的用户,例如在本地或远程通过root用户登录到数据库,还是可以进行数据变化的DML操作;
为了确保所有用户,包括具有super权限的用户也不能进行读写操作,就需要执行给所有的表加读锁的命令 “flush tables with read lock;”。
这样使用具有super权限的用户登录数据库,想要发生数据变化的操作时,也会提示表被锁定不能修改的报错。
将slave数据库read-only=1设置只读后,在master执行GRANT USAGE ON *.* TO 'user01'@'localhost' IDENTIFIED BY'123456' WITH GRANT OPTION;创建一个普通用
户,然后用普通用户登录从库,执行操作会报错。切换到root用户后还是可以进行增删改查的。
mysql5.6.x版本文档