mysql主从配置
Posted 小文叔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql主从配置相关的知识,希望对你有一定的参考价值。
一、MySQL主从介绍
什么是主从呢,就是一个是正常用的,另外是一个是他的备份。主的叫做master,从叫做salve。什么时候master挂掉了,就启用salve,保证系统可以正常运行。
当我们系统数据量比较大的时候,一台数据库服务器速度就比较慢了,影响性能,也可以通过主从的方式来提高性能。比如说我现在有2台数据库服务器,一台是master,一台是salve,那我写操作(update、insert)都在master上做,查询操作(select)都在salve机子上做操作,这样就有2台数据库了,就提高了性能,这就是传说中的,读写分离,也是一主一从。如果说查询的操作比较多,比写的多很多,一个salve顶不住了,效率很低,那就可以再加N台salve,多台一起服务,这就是一主多从。这也是mysql的集群。
Mysql服务器之间的主从同步是基于二进制日志机制,主服务器使用二进制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主服务器的数据一致。
在使用二进制日志时,主服务器的所有操作都会被记录下来,然后从服务器会接收到该日志的一个副本。从服务器可以指定执行该日志中的哪一类事件(譬如只插入数据或者只更新数据),默认会执行日志中的所有语句。
既然是集群,群,最少有2台才叫群,一个就是单台了。需要准备2台装有mysql的服务器,我这里在Windows上装了一个,在虚拟机里面装了一个mysql,虚拟机的mysql当做master节点,Windows的当salve。
二、主从配置步骤
1、 在主服务器上,必须开启二进制日志机制和配置一个独立的ID
2、在每一个从服务器上,创建一个用来专门复制主服务器数据的账号
3、在开始复制进程前,在主服务器上记录二进制文件的位置信息
4、如果在开始复制之前,数据库中已经有数据,就必须先创建一个数据快照(可以使用mysqldump导出数据库,或者直接复制数据文件)
5、配置从服务器要连接的主服务器的IP地址和登陆授权,二进制日志文件名和位置
三、具体操作
1、启用主服务器上的二进制日志,和独立的severid,在mysql的配置文件中找到server-id和log_bin这两个参数,server-id要设置一个唯一的id,log_bin自己指定一个文件就行,如果这两个参数没有的话,自己加上就可以了。
ps:改完配置文件一定要重启一下mysql,要不然不生效。
1
2
|
server-id=1 #唯一的,不要和其他机子上mysql重复
log-bin=/usr/local/mysql_data/mysql-bin.log #写一个存在的路径,但是这个目录下必须有权限,如果没有的话使用chmod加上权限即可
|
2、创建一个用来专门同步数据用的用户,sql如下,用户名和密码都可以自己随便写。
1
2
3
|
GRANT REPLICATION SLAVE ON *.* TO ‘username‘@‘%‘ identified by ‘password‘; #添加用户
FLUSH PRIVILEGES;#刷新权限
|
3、找到主服务器上的二进制文件和位置,使用下面的sql就可以看到了,先记录一下file和Position这2列,要在slave服务器上配置
1
|
SHOW MASTER STATUS;
|
4、复制之前的数据,我的master上是有一些表和数据的,要先把它整到slave一份。
先用mysqldump备份整个数据库
1
2
3
4
5
6
7
|
mysqldump -uroot -p123456 --all-databases --lock-all-tables > ~/master_db.sql
#-u :用户名
#-p :示密码
#--all-databases :导出所有数据库
#--lock-all-tables :执行操作时锁住所有表,防止操作时有数据修改
#~/master_db.sql :导出的备份数据(sql文件)位置,可自己指定
|
备份完之后,拿到的salve执行一下,也就是我Windows上面的mysql,咋执行都ok,可以直接把sql文件里面的sql语句复制出来执行,可以直接用mysql命令执行sql文件。
5、在slave节点上配置master的信息,让它能找到master。
在slave节点的配置文件里面找到server-id也改成唯一的一个,不能和其他的一样
ps:这里改完别忘了重启,配置文件修改完之后,重启了之后才会生效
在slave上执行下面的sql,设置主服务器的信息
1
2
3
4
5
6
7
8
9
10
11
12
|
change master to master_host=‘10.234.137.164‘, master_user=‘slave‘, master_password=‘123456‘,master_log_file=‘mysql-bin.000001‘, master_log_pos=2544;
-- master_host就是master的ip
-- master_user就是上面建的用户
-- master_password上面创建用户的密码
-- master_log_file是刚才上面让记的file那一列的值
-- master_log_pos是刚才上面让记的Position那一列的值
|
上面只是设置了master节点的信息,还没有开始同步,执行start slave;开始同步,sql语句如下:
1
|
START SLAVE;
|
开始同步之后,查看一下同步状态,sql如下,看下图可以看到已经开始运行了。
1
|
show slave status G; #查看salve的状态
|
6、测试是否可以同步,先在master上创建一个数据库,再去slave节点上找这个数据库。
下面是同步完之后的
至此测试结束,主从配置完成,快去试试吧。
以上是关于mysql主从配置的主要内容,如果未能解决你的问题,请参考以下文章