mysql主从和主主模式_MySQL
mysql 复制的实现机制
1)首先主mysql把操作语句保存在bin-log中
2)从服务器启动一个进程或线程向主mysql发起请求
3)从mysql 把主mysql的bin-log中的操作语句复制的从mysql的relay-log中
4)在从上执行这些操作语句
配置
主mysql 这里主要介绍要改变的内容(主从就是从各自为主的独立模式改变过来的)
1)在/etc/my.cnf 添加或修改如下内容
bin-log = mysql.bin-log #定义bin-log的文件名 (默认保存在数据目录下)
bin-log-index = mysql.bin-log.index #定义bin-log-index的文件名
binlog-format = mixed #定义binlog的格式
server-id = 1 #一定要确保主mysql的server-id 小于从mysql的server-id
2)启动mysql 和配置
#service mysqld start
#mysql #进入mysql
#set password for root@‘localhost’=password(‘mima’);
#set password for root@‘127.0.0.1’=password(‘mima’);
#grant replication slave,replication client on *.* to username@'ip' identified by 'mima'; #赋予username 拥有复制的权限
#flush privileges;
#show master status; #查看主mysql的状态
从mysql
1)在/etc/my.cnf 添加或修改如下内容
relay-log = mysql.relay-log #定义relay-log的文件名 (默认保存在数据目录下)
relay-log-index = mysql.relay-log.index #定义relay-log-index的文件名
server-id = 11 #一定要大于主mysql的server-id
2)启动mysql 和配置
#service mysqld start
#mysql #进入mysql
#set password for root@‘localhost’=password(‘mima’);
#set password for root@‘127.0.0.1’=password(‘mima’);
#flush privileges;
#change master to master_host='master_ip',master_user='username',master_password='mima';
#链接主mysql
#start slave;
#show slave status;
测试
在主mysql上建立一个数据库或表,查看从mysql是否自动‘复制’的过来
主主 的模式其实就是两边都是主,同时互为主从,可以简单的理解为把主从的配置文件整合一下就行了~~
主主模式有一个最大的问题就是当主从都同时向同一张表中写数据时,如果对应的id是自动增加,这是就有了严重的问题,为了解决这个问题,需要设定低端不同的起始值,并指定自动增加的变量为2。
作者“残雪”