为什么要主从同步?
在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一。尤其是在大规模系统中,数据库集群已经成为必备的配置之一。集群的好处主要有:查询负载、数据库复制备份等。其中Master负责写操作的负载,也就是说一切写的操作都在Master上进行,而读的操作则分摊到Slave上进行。这样一来的可以大大提高读取的效率。写操作涉及到锁的问题,不管是行锁还是表锁还是块锁,都是比较降低系统执行效率的事情。我们这样的分离是把写操作集中在一个节点上,而读操作其其他的N个节点上进行,从另一个方面有效的提高了读的效率,保证了系统的高可用性。
自己将本地电脑用水星路由器设置内网穿透,以便提供给外网服务器使用,
以下是主从的配置
主:183.X.X.X (本地)
从:47.X.X.X (阿里云)
主服务器上操作:
-
修改主数据库my.ini配置
关闭 mysql服务。
>net mysql stop
[mysqld] port=3306 #用于标识唯一的数据库,在从库必须设置为不同的值。 server-id=1 #同步日志的保存路径,也可以直接写成mysql-bin,直接写mysql-bin日志文件会生成到data文件夹的根目录 log-bin = mysql-bin #指定需要同步的数据库 binlog-do-db=需要同步的数据库(数据库名称和结构必须和从库保持一致)
修改完成之后打开cmd
开启mysql服务。
>net mysql start
-
添加主数据库用于同步的账号:
在主库中建立一个用户(专门用给从库连接的,注意这是在主库里面建立的)
cmd输入下面命令连接到Mysql服务
>mysql -hlocalhost -uroot -p;
然后执行以下命令创建用户:
mysql>grant replication slave,reload,super on . to 新建用户名@‘从服务器ip’ identified by ‘新密码’ ;
刷新权限命令
mysql>flush privileges;
找到File 和 Position 的值记录下来
mysql>show master status;
可以直接在navicat上查看
从服务器上操作:
-
修改从数据库my.ini配置
关闭 从库mysql服务。
>net mysql stop
修改从数据库my.ini配置,只用设置下面2个
[mysqld] port=3306 #用于标识唯一的数据库,在从库必须设置为不同的值。 server-id=2 #待同步的数据库 binlog-do-db=需要同步的数据库(数据库名称和结构必须和主库保持一致)
修改完成之后打开cmd
然后使用 >net mysql start 重启mysql服务。
-
slave连接master库
关闭slave服务,执行下面命令
mysql> stop slave;
执行下面命令
mysql> change master to master_host=‘主ip地址’,master_user=‘user’,master_password=‘123456’, master_log_file=‘mysql-bin.000005’,master_log_pos=35546,master_port=3306;
master_host=‘主ip地址’,
master_user=‘你创建的用户’,
master_password=‘密码’,
master_log_file=‘show master status查到的值’,
master_log_pos=show master status查到的值,
master_port=3306; //主端口打开slave服务
mysql> start slave;
#“查看连接状态,主要看Slave_IO_Running、Slave_SQL_Running。它们2个的值都必须是Yes才可以,不能是其他的Connecting之类”
mysql> show slave status;
如出现yes表示成功