基于linux部署mysql主从搭建教程

Mysql数据库主从搭建

1、master节点搭建

1.1、安装MySQL

1、下载安装包
	进入mysql官方下载对应版本数据库,本教程使用的是mysql5.7.36版本
	下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads

	可直接下载到本地,再上传至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/ #注:-C 直接指定解压到目标路径
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	# 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
    mysql -uroot -pOSlVgIvy1s-v	# -p后面为密码,根据自己安装完成之后提示的填写
    # 修改密码
    set password for root@localhost = password('新密码');
    # 退出mysql
    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
    # 开启mysql服务
    systemctl start mysql
    # 查看状态
    systemctl status mysql

1.1.1、开启远程登陆

# update 更新方法
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,执行以下语句
mysql> grant replication slave on *.* to 'backup'@'%' identified by '766716mm..';
# 执行刷新命令
mysql> flush privileges;

1.2.2、开启biinlog日志

# 在集群中,server_id必须唯一
[root@mysql-master /]# 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
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 /]# mkdir /mysql_data/log-bin
[root@mysql-master mysql_data]# chown mysql.mysql log-bin
# 重启mysql服务
[root@mysql-master /]# systemctl restart mysql

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服务,进行执行后面命令
	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
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值