Mysql数据库主从搭建
1、master节点搭建
1.1、安装MySQL
1、下载安装包
进入mysql官方下载对应版本数据库,本教程使用的是mysql5.7.36版本
下载地址:https://dev.mysql.com/downloads/mysql/5.7.html
可直接下载到本地,再上传至centos7系统中,或直接在centos7中直接下载。
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
2、创建MySQL用户
useradd mysql -r -M -s /sbin/nologin
3、安装mysql依赖包
yum install -y ncurses-devel libaio-devel gcc gcc-c++ numactl libaio glibc cmake autoconf
4、解压mysql软件包
tar -xvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
5、建立目录软连接
ln -s /usr/local/mysql-5.7.36-linux-glibc2.12-x86_64/ /usr/local/mysql
ll /usr/local/mysql
6、修改目录所属用户权限
chown -R mysql.mysql /usr/local/mysql/
chown -R mysql.mysql /usr/local/mysql-5.7.36-linux-glibc2.12-x86_64/
7、创建MySQL数据库,保存数据的路径,并创建日志
mkdir /mysql_data
chown -R mysql.mysql /mysql_data
touch /var/log/mysqld.log
chown -R mysql.mysql /var/log/mysqld.log
8、进行初始化操作
cd /usr/local/mysql/
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/mysql_data
9、编写配置文件
vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/mysql_data
port=3306
socket=/usr/local/mysql/mysql.sock
character-set-server=utf8mb4
log-error=/var/log/mysqld.log
pid-file=/tmp/mysqld.pid
[mysql]
socket=/usr/local/mysql/mysql.sock
[client]
socket=/usr/local/mysql/mysql.sock
10、生成启动脚本,并添加到系统变量
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/mysql_data
添加变量
vim /etc/profile
最底部添加
export PATH=$PATH:/usr/local/mysql/bin
执行编译命令
source /etc/profile
11、启动mysql服务,并修改默认密码
/etc/init.d/mysqld start
mysql -uroot -pOSlVgIvy1s-v
set password for root@localhost = password('新密码');
exit;或quit;
12、将MySQL加入systemctl管理
vim /usr/lib/systemd/system/mysql.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
systemctl daemon-reload
systemctl start mysql
systemctl status mysql
1.1.1、开启远程登陆
mysql > update mysql.user set host = '%' where user = 'root';
mysql> flush privileges;
1.1.2、数据库备份命令
Mysqldump常用命令:
mysqldump -u用户名 -p密码 --databases 数据库1 数据库2 > xxx.sql
常用选项:
-u:用户名
-p:密码
-P:端口号,不写默认3306
--all-databases,-A:备份所有数据库
--databases,-B:用于备份多个数据库,如果没有该选项,mysqldump把第一个名字参数作为表名。使用该选项,mysqldump把每个名字当作为数据库名
-d:只导出数据库的表结构
-t:只导出数据库的数据
--quick.-q:快速导出
--xml,-X:导出为xml文件
具体使用案例:
1.备份全部数据库的数据和结构(-A)
mysqldump -uroot -p123456 -A > 11.sql
2.备份全部数据库的结构(-d)
mysqldump -uroot -p123456 -A -d > 11.sql
3.备份全部数据库的数据(-t)
mysqldump -uroot -p123456 -A -t > 11.sql
4.备份单个数据库的数据和结构(javacms数据库名)
mysqldump -uroot -p123456 javacms > javacms.sql
5.备份单个数据库结构(javacms数据库名,-d)
mysqldump -uroot -p123456 -d javacms > javacms.sql
6.备份单个数据库数据(javacms数据库名,-t)
mysqdump -uroot -p123456 -t javacms > javacms.sql
7.备份多个表的结构和数据(table1,table2表名)
mysqldump -uroot -p123456 javacms table1 table2 > javacms.sql
8.一次备份多个数据库
mysqldump -uroot -p123456 --databases db1 db2 > 111.sql
1.1.3、数据库还原
1.系统命令行
mysqladmin -uroot -p123456 create db_name
mysql -uroot -p123456 db_name < d:\bak\11.sql
注:在导入备份数据库前,db_name如果没有,是需要创建的,而且与backup11.sql中数据库名是一样的才可以导入
2.soure方法
user db
soutce e:\bak\111.sql
注:
1. 还原单个数据库、单个数据库的多表需要指定数据库,而还原多个数据库时不用指定数据库。
2. 区别:备份用的命令是mysqldump, 还原用的是mysql。
1.2、部署主从
1.2.1、创建复制用户
mysql> grant replication slave on *.* to 'backup'@'%' identified by '766716mm..';
mysql> flush privileges;
1.2.2、开启biinlog日志
[root@mysql-master /]
[mysqld]
basedir=/usr/local/mysql
datadir=/mysql_data
port=3306
socket=/usr/local/mysql/mysql.sock
character-set-server=utf8mb4
log-error=/var/log/mysqld.log
pid-file=/tmp/mysqld.pid
server-id=90
log-bin=/mysql_data/log-bin/binlog
[mysql]
socket=/usr/local/mysql/mysql.sock
[client]
socket=/usr/local/mysql/mysql.sock
[root@mysql-master /]
[root@mysql-master mysql_data]
[root@mysql-master /]
1.2.3、实现主从复制
1、查看主节点binlong日志的状态
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000003 | 154 | | | |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
2、在从节点配置主从
mysql -uroot -p766716mm
change master to
master_host='192.168.21.150',
master_port=3306,
master_user='backup',
master_password='766716mm..',
master_log_file='binlog.000001',
master_log_pos=4585;
3、开启主从复制(从节点执行)
mysql> start slave;
4、查看状态(从节点执行)
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_Running: Yes
Slave_SQL_Running: Yes