Master:192.168.73.128
Slave:192.168.73.132
Master配置:
yum -y install mariadb mariadb-server #安装MariaDB服务
systemctl start mariadb #启动MariaDB服务
systemctl enable mariadb #配置MariaDB为开机自启
mysql_secure_installation #初始化MariaDB配置(New password为设置root密码,其他全回车)
vim /etc/my.cnf #修改MariaDB配置文件
11 innodb_file_per_table=NO #关闭独立表空间
12 log-bin=/var/lib/mysql/master-bin #开启MariaDB服务的binlog功能,并制定存储位置及文件名
13 binlog_format=mixed #指定binlog日志格式为mixed
14 server-id=1 #配置本机MariaDB的ID(全局唯一)
systemctl restart mariadb #重启MariaDB服务
mysql -uroot -p123 #尝试登录
show variables like '%per_table%'; #检查独立表空间是否关闭
grant replication slave on *.* to 'slave'@'xxx.xxx.xxx.xxx' identified by '123';
#创建账号slave,配置密码为123,并指定该账号只允许从IP地址为xxx.xxx.xxx.xxx的主机登录
切换到Slave进行远程登录测试:
mysql -hxxx.xxx.xxx.xxx -uslave -p123 #确定可以正常远程登录即可xxx.xxx.xxx.xxx为Master地址
回到Master:
mysql -uroot -p123
flush tables with read lock; #将数据库加锁,只读。保证数据一致性,避免备份过程中继续往数据库中写入数据
show master status; #查看bin-log文件名及当前位置
quit
mysqldump -uroot -p --all-databases > /root/db.sql #将所有库进行备份,并将备份文件保存到/root目录下,命名为db.sql
Slave配置:
将Master备份的db.sql导入Slave,并导入到MariaDB中
mysql -uroot -p123 < db.sql
vim /etc/my.cnf
innodb_file_per_table=NO #关闭独立表空间
server-id=2 #配置本机MariaDB的ID(全局唯一)
relay-log=/var/lib/mysql/relay-bin
systemctl restart mariadb
mysql -uroot -p123
change master to master_host='xxx.xxx.xxx.xxx',master_user='slave',master_password='123',master_log_file='master-bin.xxxxxx',master_log_pos=xxx;
start slave;
show slave status\G;
测试主从同步:
Master:
mysql -uroot -p123
create databases test1;
use test1;
Slave:(登录本地数据库,查看是否同步了上述命令创建的test1库)
mysql -uroot -p123
show databases;
use test1;
show tables;
Master:
use test1;
create table `user` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`username` char(25) NOT NULL DEFAULT '' COMMENT '用户名',
`password` char(32) NOT NULL DEFAULT '' COMMENT '密码',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户表';
#在这里要格外注意标点,“`”和“'”是不同的,一个是上排数字键“1”左侧的,一个是分号右侧那个按键的(双引号、单引号)
Slave:(登录本地数据库,查看是否同步了上述命令创建的user表表项)
select * from user;
Master:
insert into user (username,password) VALUES ('jack','123');
select * from user;
desc user;
Slave:(登录本地数据库,查看是否同步了上述命令为user表添加的值)
show tables;
desc user;