一、基本流程
1.主库配置主从配置项,创建用于同步的账号,进行锁表,获取二进制日志的信息,备份数据
2.从库配置主从配置项,备份数据导入,从库配置主库信息,开启主从同步,验证信息
3.主库表解锁,手动创建库或者表,去从库验证是否同步
二、主库my.cnf配置
#我之前的文章《mysql5.7.40数据库部署安装》中my.cnf中已经包含了这块内容可以直接拿那个my.cnf使用
#找到[mysqld],在下面加入以下两行内容:
log-bin=mysql-bin
#id可自取,我一般取本机ip最后的网段
server-id=123
#修改后重启数据库
service mysql restart
三、创建同步账号
#登录主库mysql后台的bin路径下执行
./mysql -u root -p
#回车后输入数据库密码.可以复制粘贴,密码输入时不会显示
#回车进入数据库,然后依次执行以下两行命令
#设置账号salve(@前面的),密码设置为slave(最后的这个),%是设置可以通过其他服务器远程登录
CREATE USER 'slave'@'$slave_ip' IDENTIFIED BY '$slave_pass';
#如果账号写的是salve,则不需要修改任何内容,如果设置其他账号名,则需要将"slave"修改掉
grant replication slave on *.* to 'slave'@'$slave_ip' identified by '$slave_pass';
四、锁表操作
#进行锁表操作,执行以下命令
flush tables with read lock;
五、获取主库二进制日志信息
#执行以下命令
show master status;
#会打印如下内容:记住File和Position的值,从库同步时会用到
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 524516 | | | |
+------------------+----------+--------------+------------------+-------------------+
六、主库数据备份
#备份数据库的两种方法(如果主从都是辛苦不需要迁数据,部署完直接跳过六和八步骤即可)
#第一种,在mysql安装路径下的bin路径下,需要修改的内容-p后面的是数据库密码需要修改,mysql.sock 根据命令{find / -name mysql.sock}
./mysqldump -uroot -p'My9Sql6?a' -S /tmp/mysql.sock --all-databases > /home/backmysql/mysql_bak.$(date +%F).sql
#第二种,数据量太大磁盘不足再就是备份时间过长,建议用下面的命令,被分成.gz格式,可以压缩成源文件的1/3大小,修改的部分和第一种相同
./mysqldump -uroot -p'My9Sql6?a' -S /tmp/mysql.sock --all-databases | gzip > /home/backmysql/mysql_bak.$(date +%F).sql.gz
七、从库操作
#前提:从库也按照正常数据库安装搭建好
#修改my.cnf(使用 《mysql5.7.40数据库部署安装》进行安装的不需要再次修改)
#[mysqld]下面增加以下内容,值建议取本机ip最后的网段数字
server-id=223
#重启数据库
service mysql restart
八、备份数据库导入
#将在主库备份导出的数据放到从库服务器上,记录存放路径
#进入从库的bin路径执行以下命令(第二种备份方式的记得提前解压)
./mysql -uroot -p'My9Sql6?a' -S /tmp/mysql.sock < /home/backmysql/mysql_bak.2023-3-26.sql
九、登录从库进行主从配置
#从库bin下执行登录
./mysql -u root -p
#修改以下内容中项目实际的信息,在命令行依次输入一下内容,粘贴一行回车,粘贴一行回车操作
#注,此行没有';',所以会进入内层命令,方便执行多行,修改信息后的命令依次粘贴回车就好
change master to
#主库ip
master_host='172.0.0.0',
#主库端口
master_port=3306,
#主库设置的同步账号
master_user='slave',
#主库设置的同步账号密码
master_password='slave_pass',
#主库二进制日志文件
master_log_file='mysql-bin.000002',
#二进制文件位置
master_log_pos=524516;
#开启主从同步
start slave;
#在从库验证是否配置成功,执行
show slave status \G
#上述命令打印的控制台查看,以下两行内容是Yes即成功
=========================================
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
=========================================
十、也可以到主库再去查看一下主从状态
#登录(略)
#查看信息
show master status \G