MySQL主从复制

  主从复制:MySQL主从复制的原理就是从服务器读取主服务器的binlog,然后根据binlog的记录来更新数据库。
mysql主从架构中其实就一个主在工作,而从就相当于一个备份机器,从通过日志监测的方式来备份主库上的数据而保证主库的数据安全。在这种架构中如果从上的数据做了改变,主数据是不会发生任何变化的。
为什么会有mysql的主主复制。因为在一些高可用的环境中,mysql的主从不能满足现实中的一些实际需求。比如,一些流量大的网站数据库访问有了瓶颈,需要负载均衡的时候就用两个或者多个的mysql服务器,而这些mysql服务器的数据库数据必须要保持一致,那么就会用到主主复制。
master:
首先将bin-log日志打开
其次将server-id设置为1
将log-slave-updates给关闭掉(默认的情况下mysql是关闭的)

[root@master ~]# vi /etc/my.cnf
log-bin=mysql-bin
server-id=1

[root@master ~]# mysql -uroot -p
Enter password:
mysql> grant replication slave on *.* to 'admin'@'172.17.237.%' identified by '123456' ;
Query OK, 0 rows affected (0.00 sec)
-----------------------------------------------------------------------------------------------------------------------------
建立一个帐户admin,并且允许从172.17.237.0这个网段来登陆,密码是123456。
添加后在从服务器上用 mysql -h172.17.237.111 -uadmin -p123456 来测试下是否可以访问主数据库
报错:Mysql:is not allowed to connect to this MySQL server
解决办法:从服务器上创建一个远程超级用户
grant all privileges on *.* to admin@'%' identified by '123456' with grant option;

-----------------------------------------------------------------------------------------------------------------------------------
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 335 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

mysql>

slave1:
首先将bin-log日志打开
其次将server-id设置为2
将log-slave-updates打开

[root@slave1 ~]# mysql -h172.17.237.111 -uadmin -p123456 -----测试 能够登录 授权成功
Welcome to the MySQL monitor. Commands end with ; or \g.
[root@slave1 ~]# vi /etc/my.cnf
server-id=2
relay_log=mysql-relay-bin
log_slave_updates=1
read_only=1
log-bin=mysql-bin
[root@slave1 ~]# mysql -uroot -p
Enter password:
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> change master to master_host='172.17.237.111', master_user='admin', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=335;
Query OK, 0 rows affected (0.02 sec)

mysql> start slave
-> ;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.17.237.111
Master_User: admin
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 335
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes -----两项为yes则配置成功
Slave_SQL_Running: Yes


复制(Replication)简单的说就是同步数据库,类似于拷贝数据库到另一台服务器上,但它是实时地保证两个数据库的完全同步。用于分布式数据库。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值