MySQL主从(a/b)设置:
安装:
主机a: master
主机b: slave
请注意,虚拟机环境下不要克隆主机,应当直接安装两台,否则造成UUID相同不能实现主从配置
通用配置:
1.相同网段的IP
master='1.1.1.102'
slave='1.1.1.103'
2.hosts主机名(master,slave)
3.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
4.时间同步
5.删除旧的数据库:rpm -qa |grep mariadb |xargs yum remove -y && rm -rf /etc/my.cnf*
6.共享服务器: 配置yum源(ftp://1.1.1.101)
下载地址: https://dev.mysql.com/downloads/cluster/
yum install -y vsftpd
tar -xf mysql-cluster-community-7.5.5-1.el7.x86_64.rpm-bundle.tar -C /var/ftp/pub
createrepo /var/ftp/pub
cat > /etc/yum.repos.d/mysqlcluster.repo << EOT
[mysqlcluster]
name=myclu
baseurl=ftp://1.1.1.101/pub/mysql
enabled=1
gpgcheck=0
EOT
使用scp或rsync将/etc/yum.repos.d/mysqlcluster.repo同步到主机'a/b'上
7.安装(master/slave)
yum clean all && yum makecache
yum install -y createrepo
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum clean all && yum makecache
yum install -y mysql-cluster-community-server
8.配置密码:
systemctl start mysqld
grep password /var/log/mysqld.log
mysql -uroot -p
set global validate_password_policy=0;
set global validate_password_length=6;
set password=password('000000');
exit;
systemctl stop mysqld
9.设置主从关系:
主:
vim /etc/my.cnf
#开启二进制日志
log-bin=mysql-bin
#设置server-id
server-id=1
systemctl start mysqld
mysql -uroot -p000000
set global validate_password_policy=0;
set global validate_password_length=6;
grant replication slave on *.* to 'repl'@'1.1.1.102' identified by '000000';
flush privileges;
SHOW MASTER STATUS;
+-------------------------+------------+---------------------+-------------------------+---------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------------+------------+--------------------+--------------------------+---------------------------+
| mysql-bin.000007 | 154 | | | |
+-------------------------+------------+--------------------+--------------------------+---------------------------+
从:
vim /etc/my.cnf
#设置server-id
server_id = 2
read_only = 1
systemctl start mysqld
mysql -uroot -p000000
stop slave;
CHANGE MASTER TO
MASTER_HOST='1.1.1.101',
MASTER_USER='repl',
MASTER_PASSWORD='000000',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1040;
start slave;
10.手工同步:
主:
导出主服务当前所有的数据:(如果是全新的架构还没有应用数据则不需要该操作 )
mysqldump -uroot -p --all-databases --master-data > alldata.dump
或者:
mysqldump -uroot -p --single-transaction --all-databases --master-data > alldata.dump
#如果已锁表, 则不需要--single-transaction
scp alldata.dump root@1.1.1.103:/root/
从:
以--skip-slave-start重新启动:
mysqld_safe --user=mysql --skip-slave-start &
mysql -uroot -p < alldata.dump