网站建设友汇,最新国际新闻,私人网站开发公司,南宁网站推广公司MySQL主从复制的核心思路#xff1a; 1、slave必须安装相同版本的mysql数据库软件。
2、master端必须开启二进制日志#xff0c;slave端必须开启relay log 日志。
3、master主服务器和slave从服务器的server-id号不能一致。
4、slave端配置向master端来同步数据。
master…
MySQL主从复制的核心思路 1、slave必须安装相同版本的mysql数据库软件。
2、master端必须开启二进制日志slave端必须开启relay log 日志。
3、master主服务器和slave从服务器的server-id号不能一致。
4、slave端配置向master端来同步数据。
master端必须创建一个复制用户。
保证master和slave端初始数据一致。
配置主从复制slave端。 MySQL主从复制的具体实现
第一步上传mysql软件包到master和slave服务器。 第二步在Master端安装、初始化以及运行mysql软件。
安装要求 vim mysql.sh
#!/bin/bash
yum install libaio -y
tar -xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
rm -rf /usr/local/mysql
mv mysql-5.7.31-linux-glibc2.12-x86_64 /usr/local/mysql
useradd -r -s /sbin/nologin mysql
rm -rf /etc/my.cnf
cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
bin/mysqld --initialize --usermysql --basedir/usr/local/mysql /root/password.txt
bin/mysql_ssl_rsa_setup --datadir/usr/local/mysql/data
cp support-files/mysql.server /etc/init.d/mysqld
service mysqld start
echo export PATH$PATH:/usr/local/mysql/bin /etc/profile
source /etc/profile
然后是运行脚本
sh mysql.sh 安全配置
mysql_secure_installation 配置my.cnf重点是开启二进制日志
# cd /usr/local/mysql
# vim my.cnf
[mysqld]
basedir/usr/local/mysql
datadir/usr/local/mysql/data
socket/tmp/mysql.sock
port3306
log-error/usr/local/mysql/data/master.err
log-bin/usr/local/mysql/data/binlog 一定要开启二进制日志
server-id10
character_set_serverutf8mb4 utf8mb4相当于utf8升级版
配置完成后重启mysqld服务
# service mysqld restart
# chkconfig --add mysqld
# chkconfig mysqld on 在Slave从服务器端安装mysql软件不需要初始化。
安装mysql软件
# vim mysql.sh
#!/bin/bash
yum install libaio -y
tar -xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
rm -rf /usr/local/mysql
mv mysql-5.7.31-linux-glibc2.12-x86_64 /usr/local/mysql
useradd -r -s /sbin/nologin mysql
rm -rf /etc/my.cnf
cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
cp support-files/mysql.server /etc/init.d/mysqld
echo export PATH$PATH:/usr/local/mysql/bin /etc/profile
source /etc/profile 相对于主服务器MySQL的安装与配置从服务器端不需要进行初始化操作因为其数据将来都来自于主服务器。 配置my.cnf文件
# cd /usr/local/mysql
# vim my.cnf
[mysqld]
basedir/usr/local/mysql
datadir/usr/local/mysql/data
socket/tmp/mysql.sock
port3310
log-error/usr/local/mysql/data/slave.err
relay-log/usr/local/mysql/data/relaylog 开启中继日志
server-id100
character_set_serverutf8mb4 把master主服务器的数据目录同步到slave从服务器 a. 把MASTER服务器中的mysqld停止掉
# service mysqld stop
b. 把MASTER服务器中的/usr/local/mysql/data目录下的auto.cnf文件删除
# rm -rf /usr/local/mysql/data/auto.cnf 没安装一个mysql软件其data数据目录都会产生一个auto.cnf文件里面是一个唯一性的编号相当于我们每个人的身份证号码。 c. 把MASTER服务器中/usr/local/mysql中的data目录拷贝一份到SLAVE从服务器的/usr/local/mysql目录
# rsync -av /usr/local/mysql/data root10.1.1.100:/usr/local/mysql/
d. 同步完成后把主服务器与从服务器中的mysqld启动
# service mysqld start
直接更改/usr/local/mysql目录的权限
# chown -R mysql.mysql /usr/local/mysql 配置MASTER-SLAVE主从同步
a. 在MASTER主服务器中创建一个账号专门用于实现数据同步
MySQL5.7及以下版本
mysql grant replication slave on *.* to slave10.1.1.% identified by 123;
MySQL新版本中
mysql create user slave10.1.1.% identified by 123;
mysql grant replication slave on *.* to slave10.1.1.%;
mysql flush privileges;
b. 在MASTER中锁表然后查看二进制文件的名称及位置
mysql show master status;
----------------------------------------------------------------------------
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
----------------------------------------------------------------------------
| binlog.000002 | 601 | | | |
----------------------------------------------------------------------------
1 row in set (0.00 sec)在SLAVE从服务器中使用change master to指定主服务器并实现数据同步。
mysql change master to master_host192.168.17.126,master_userslave,master_password123,master_port3306,master_log_filebinlog.000002,master_log_pos601;
Query OK, 0 rows affected, 2 warnings (0.01 sec) 启动slave数据同步
mysql start slave;
mysql show slave status\G 主master服务器解锁
mysql unlock tables; 主从复制必须保证两台数据库实例的server-id不一致 主服务器必须开启二进制日志从服务器必须开启中继日志 主从复制搭建必须保证初始数据一致 主服务器必须要给从服务器创建一个复制用户并授予复制权限 Master—Slave架构主写会同步到从而从写不会同步到主