mysql主从复制:
mysql主从复制,大概原理是主服务器操作时,开启二进制日志(log-bin),将操作写入二进制日志,从服务器得到改变的通知,会读取二级制日志文件到从机器节点上,然后sql线程执行更新
配置步骤:
1、主机配置serverId,开启log-bin
2、从机配置serverId
3、主机设置一个从机的复制用户账号
4、从机执行change命令进行复制
开始配置:
1、准备两台linux主机
ip | 角色 |
---|---|
192.168.58.11 | 主机 |
192.168.58.12 | 从机 |
2、安装mysql,这里使用的mariadb
两台机器都执行以下命令
yum install mariadb-server
3、在主机上配置文件上进行设置
1)打开/etc/my.cnf
vi /etc/my.cnf
配置如下:
2)启动主机mariadb
systemctl start mariadb
3)主机设置从机的同步账号
GRANT REPLICATION SLAVE ON *.* TO 'hello'@'192.168.58.12' identified by '123456';
以上命令指的是:允许使用账号(hello)和密码(123456),在ip为192.168.58.12上复制任何库的任何表
4、从机设置
1)配置my.cnf
2)启动mariadb
GRANT REPLICATION SLAVE ON *.* TO 'hello'@'192.168.58.12' identified by '123456';
3)执行命令复制启动命令
change master to master_host='192.168.58.11',master_user='hello',master_password='123456',master_log_file='master-log.000003',master_log_pos=497;
其中master_log_file和master_log_pos指的是复制哪个binlog文件和在偏移量,以主机执行命令为准,如下命令:
主机上执行:
show master status
4)启动start salve
start slave;
4)查看状态
show slave status;
5、好了,这就完成了!
参考网上其他小伙伴的博客,我写这个也是为了自己的记录而已!
问题:
my.cnf中的log-bin参数指的是二进制文件的名称,本来是可以设置一个文件路径的,但是我这怎么也不能成功,总是出现:/data/binlog/mysql-bin.index’ not found (Errcode: 13)
我把该路径下也给换成了mysql的用户还是不行,这也是一个遗憾把