当前位置:   article > 正文

基于linux部署mysql主从搭建教程_linux服务器mysql主从数据库怎么部署

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81

1.1.1、开启远程登陆

# update 更新方法
mysql > update mysql.user set host = '%' where user = 'root';
# 刷新
mysql> flush privileges;
  • 1
  • 2
  • 3
  • 4

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

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
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

1.2、部署主从

1.2.1、创建复制用户

# 登陆进mysql,执行以下语句
mysql> grant replication slave on *.* to 'backup'@'%' identified by '766716mm..';
# 执行刷新命令
mysql> flush privileges;
  • 1
  • 2
  • 3
  • 4

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
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号