一、准备阶段
两台linux虚拟机centos7版本,都安装了mariadb 5.5.6
进行主从同步配置:
首先防火墙要开放3306端口,
主库服务器ip:192.168.211.100
从库服务器ip:192.168.211.101
二、配置主库
1.主库上给从库ip授权
mysql>GRANT REPLICATION SLAVE ON *.* to 'rep1'@'192.168.211.101' identified by 'test123456';
mysql>FLUSH PRIVILEGES;
2.修改主库配置文件
设置server-id,开启binlog
vim /etc/my.cnf
添加:
log-bin=/var/lib/mysql/binlog
server-id=1
binlog-do-db = study1
server-id:主库端的ID号;
log-bin:同步的日志路径及文件名
binlog-do-db:要同步的数据库名
设置不同步的数据库:
binlog-ignore-db = mysql 不同步mysql库和test库
binlog-ignore-db = test
配置好后重启mysql(mariadb)
service mariadb restart
3.查看主库状态
mysql> show master status;
查看主服务器当前二进制日志名和偏移量,为了在从库启动后,从这个位置进行数据的恢复
三、配置从库
1.配置文件
vi /etc/my.conf
由于新版本mysql(或mariadb)有些变量不在配置文件中设置,只要添加如下:
server-id=2
replicate-do-db=study1
mysql中:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.211.100',
MASTER_PORT=3306,
MASTER_USER='rep1',
MASTER_PASSWORD='test123456',
MASTER_LOG_FILE='binlog.000007',
MASTER_LOG_POS=245; #后面两个参数的值与主库保持一致
2.启动slave进程
mysql> slave start;
3.查看从库状态
若显示:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
则成功
四、同步数据
主库操作:
1、停止主库的数据更新操作
mysql>flush tables with read lock;
2、新开终端,生成主数据库的备份(导出数据库)
[root@lsx01 ~]# mysqldump -uroot -ptest123 study1 > study1.sql
3、将备份文件传到从库
[root@lsx01 ~]# scp study1.sql root@192.168.211.101:/root/
4、主库解锁
mysql>unlock tables;
从库操作:
1、停止从库slave
mysql>slave stop;
2、新建数据库study1
mysql> create database study1 default charset utf8;
3、导入数据
[root@lsx01 ~]# mysql -uroot -ptest123 study1<study1.sql
4、查看从库已有该数据库和数据
mysql> show databases;
然后进行增删改查测试即可
附录:
一、mysql下这条命令可以给其他主机此数据库所有权限:
grant all privileges on *.* to 'username'@hostname identified by 'password' with grant option;
二、将库打包出sql文件
[root@lsx02 ~]# mysqldump -uroot -p123456 study1 > study1.sql
三、远程导入sql文件
mysql -h 192.168.211.100 -urep1 -ptest123456 study1 < study1.sql