MySQL主从(基本功能实现)

    技术2022-07-10  227

    1.环境准备

    1.1环境说明

    在saster上面已经有一个数据库,要求搭建一主双从环境,将saster已有的数据库备份至从服务器,且实现主从复制 saster IP地址为192.168.100.235,已有customer库 slave1的IP地址为192.168.100.60,全新服务器,无MySQL slave2的IP地址为192.168.100.70,全新服务器,无MySQL 从节点采用二进制安装MySQL

    2.搭建NTP服务器

    2.1安装NTP

    [root@mysql_server_master ~]## yum -y install ntp

    2.2配置NTP

    [root@mysql_server_master ~]# vim /etc/ntp.conf restrict 127.127.1.0 restrict 127.127.1.0 stratum 8

    2.3启动时间服务

    [root@mysql_server_master ~]# systemctl start ntpd

    2.4在从节点运行时间同步

    slave1同步:

    [root@mysql_server_slave1 ~]# yum -y install ntpdate [root@mysql_server_slave1 ~]# ntpdate 192.168.100.235

    slave2同步

    [root@mysql_server_slave2 ~]# yum -y install ntpdate [root@mysql_server_slave2 ~]# ntpdate 192.168.100.235

    3.软件安装

    3.1slave1

    获取二进制包 [root@mysql_server_slave1 ~]# cd /usr/local/src [root@mysql_server_slave1src]#wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.30- el7-x86_64.tar.gz 解压缩 [root@mysql_server_slave1 src]# tar -zxvf mysql-5.7.30- el7-x86_64.tar.gz -C /usr/local 初始化前准备 创建mysql程序用户 [root@mysql_server_slave1 ~]# adduser -M -s /sbin/nologin mysql 创建MySQL数据文件目录 [root@mysql_server_slave1 ~]# mkdir -p /data/mysql/data/ 为MySQL相关目录授权 [root@mysql_server_slave1 ~]# chown -R mysql:mysql /usr/local/mysql/ [root@mysql_server_slave1 ~]# chown -R mysql:mysql /mysql/data/ 建立MySQL配置文件(复制Master配置文件,修改server-id) [root@mysql_server_slave1 ~]# scp root@192.168.100.235:/etc/my.cnf /etc/my.cnf 注:必须修改server-id 生成MySQL启动脚本 #设置环境变量 [root@local support-files]# echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile [root@local support-files]# source /etc/profile [root@local support-files]# tail -1 /etc/profile export PATH=/usr/local/mysql/bin:$PATH #生成启动脚本 [root@local ~]# cd /usr/local/mysql/support-files/ [root@local support-files]# ls magic mysqld_multi.server mysql-log-rotate mysql.server [root@local support-files]# cp mysql.server /etc/init.d/mysqld 初始化数据库 [root@mysql_server_slave1 ~]#/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data

    注:对/data/mysql/data应该保持为空,且属主与属组均为mysql

    修改数据库密码

    登录MySQL(没有密码登录) [root@local ~]# mysql -uroot -p Enter password: 查看版本 mysql> select version(); +-----------+ | version() | +-----------+ | 5.7.30 | +-----------+ 1 row in set (0.00 sec) 设置密码 mysql> update mysql.user set authentication_string=password('123') where user='root'; Query OK, 1 row affected, 1 warning (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 1 mysql> flush privileges; Query OK, 0 rows affected (0.01 sec

    3.2slave 2

    在slave2上保持和slave1同步操作即可

    4.配置MySQL的master

    4.1 登录主服务器

    4.2 为从服务器授权

    mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.100.%' IDENTIFIED BY'123'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000009 | 19568 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec) FIle列为文件名,Position列显示偏移量

    注:文件名和偏移量在配置从服务器时需使用,且保持一致

    5.对从库同步主库已有数据文件

    5.1对custumer库做增量备份

    [root@mysql_server_master data]# mysqldump -uroot -p -B custumer > /root/custumer.sql

    5.2 在slave1复现master数据

    在slave1将主库对custumer的全量备份文件拉取到本地数据库的数据文件目录下

    [root@mysql_server_slave1 ~]# cd /data/mysql/data/ [root@mysql_server_slave1 data]# scp root@192.168.100.235:/root/custumer.sql /data/mysql/data/ root@192.168.100.235's password: custumer.sql 100% 2584 2.1MB/s 00:00

    将custumer恢复到本地数据库

    登录MySQL,使用source恢复

    恢复验证

    5.3 在slave2复现master数据

    对于slave2保持和slave1同步操作即可

    6.在从服务器启动同步

    6.1slave1

    mysql>change master to master_host='192.168.100.235',master_user='slave',master_password='123',master_log_file='mysql-bin.000009',master_log_pos=19568; mysql>start slave;

    6.2 slave2

    对slave2保持6.1中操作即可

    7.验证主从同步效果

    7.1在主服务器为client插入一条数据

    7.2slave1进行验证

    7.3slave2进行验证

    Processed: 0.024, SQL: 9