配置yum源工具
- 1.备份原来仓库文件
cd /etc/yum.repos.d/
mkdir allbak
mv ./* allbak
#此时 /etc/yum.repos.d/底下就没有repo文件,此时无法使用yum工具,必须配置yum源,生成新的.repo文件
- 2.下载第一个阿里云仓库文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# -O 参数 ,指定一个下载地址,且改名
- 3.配置第二个仓库文件 epel 额外仓库(redis,nginx,mongo,ipython)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
- 4.清空原本yum缓存
yum clean all
- 5.生成新的阿里云的yum缓存,加速下载预热数据
yum makecache
centos安装mariadb
centos7 mariadb的学习
1.在linux上安装软件的方式
-yum安装 在线搜索rpm格式的软件包,进行自动的依赖关系处理,下载,安装
(阿里云的yum仓库,里面的软件都是阿里云运维工程师定义的)
yum install mysql -y
-手动rpm包安装 ,需要手动解决N个软件依赖
-rpm -ivh mysqlxx.rpm
-源码编译安装(这种方式是企业应用最多的)
(可以自定制软件的版本,以及可以最优先的使用最新版本软件)
2.yum源的配置(mysql的yum源)
1.在线下载阿里云的 yum 仓库,以及epel仓库
CentOS-Base.repo epel.repo
2.安装mysql的方式
yum install mysql-server mysql -y
yum install mariadb-server mysql -y (下面这一行才是对的)
3.安装mysql的方式也有2种,阿里云官方提供的mariadb软件包,版本可能太低,但是下载网速很快,方便学习使用
4.在企业里面,多半不会使用阿里云的mariadb版本,因为版本太低,安全性太低,公司会配置myariadb官方的yum仓库
1.手动创建mariadb的仓库文件
touch Mariadb.repo
2.写入配置信息
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
3.尝试安装最新版本mariadb
cat
5.使用mysql,启动
systemctl start mariadb
6.初始化数据库
mysql_secure_installation
7.配置数据库的中文支持
1.修改mysql的配置文件,支持中文编码
cat /etc/my.cnf 和我一致就行
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
log-error=/var/log/mysqld.log
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
2.在服务器上,修改了配置文件,都要重启数据库服务
systemctl restart mariadb
3.在utf8编码下,配置mariadb
show create table stu;
show create database s16;
8.在远程用 mysql客户端去连接服务端,方式有哪些
1.navicat
2.cmd
mysql -uroot -p -h 192.168.15.53
3. pycharm
4.pymysql python
5.orm django
9.配置mysql支持远程连接的sql语句
授权mariadb远程连接
#授予root用户对所有的库表所有的权限,在所有的机器上操作,皆可登录
grant all privileges on *.* to root@'%' identified by 'centos';
刷新授权表:
flush privileges;
10.数据库备份操作
mysqldump -u root -p --all-databases > /tmp/db.dump
数据导入,方式有2种
1.mysql -uroot -p < /tmp/db.dump
2.进入mysql命令行,输入source /tmp/db.dump
主从原理
- master将改变的数 记录在本地的 二进制日志中(binary log) ;该过程 称之为:二进制日志件事
- slave将master的binary log拷贝到自己的 relay log(中继日志文件)中
- 中继日志事件,将数据读取到自己的数据库之中
两个Linux之间进行主从同步
mysql主从同步技术
1.环境准备,准备2台机器,一个master 一个slave
192.168.15.53 主库
192.168.15.94 从库
2.配置主库的环境
1.修改主库的配置文件,开启binlog功能
vim /etc/my.cnf
[mysqld]
server-id=1
log-bin=s16-mysql-bin
2.重启数据库
systemctl restart mariadb
3.创建用于数据同步的账号
create user 'banzhang'@'%' identified by 'bz666';
4.授予这个账号,一个slave的身份标识
grant replication slave on *.* to 'banzhang'@'%';
5.锁表
flush table with read lock
6.数据库信息导出
mysqldump -uroot -p > --all-databases /opt/db.dump
在mariadb从库的操作
1.阿里云的源,和官方源,同一安装软件包名如下
yum install mariadb-server mariadb -y
2.配置从库的配置文件,开启server-id
vim /etc/my.cnf
写入如下操作
[mysqld]
server-id=3
read-only=true
character-set-server=utf8
collation-server=utf8_general_ci
log-error=/var/log/mysqld.log
3.重启数据库
systemctl restart mariadb
4.在从库,通过一条命令,开启主从同步
mysql > change master to master_host='192.168.15.53',
master_user='banzhang',
master_password='bz666',
master_log_file='s16-mysql-bin.000001',
master_log_pos=568;
5.开启slave同步
start slave ;
6.检查主从同步状态
show slave status\G
当你检查这2条参数,yes的时候,主从ok
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
此时解锁主库!!
此时解锁主库!!
此时解锁主库!!
验证主从同步是否正常
windows和Linux之间主从同步(windows是主,Linux是从)
```
windows:mysql 主
linux:mysql从
安装windows版mysql:
如果之前计算机中安装过Mysql,要重新再安装 则需要:先卸载 再安装
先卸载:
通过电脑自带卸载工具卸载Mysql (电脑管家也可以)
删除一个mysql缓存文件C:\ProgramData\MySQL
删除注册表regedit中所有mysql相关配置
--重启计算机
安装MYSQL:
安装时,如果出现未响应: 则重新打开D:\MySQL\MySQL Server 5.5\bin\MySQLInstanceConfig.exe
图形化客户端: SQLyog, Navicat
如果要远程连接数据库,则需要授权远程访问。
授权远程访问 :(A->B,则再B计算机的Mysql中执行以下命令)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;
如果仍然报错:可能是防火墙没关闭 : 在B关闭防火墙 service iptables stop
实现主从同步(主从复制):图
1.master将改变的数 记录在本地的 二进制日志中(binary log) ;该过程 称之为:二进制日志件事
2.slave将master的binary log拷贝到自己的 relay log(中继日志文件)中
3.中继日志事件,将数据读取到自己的数据库之中
MYSQL主从复制 是异步的,串行化的, 有延迟
master:slave = 1:n
配置:
windows(mysql: my.ini)
linux(mysql: my.cnf)
配置前,为了无误,先将权限(远程访问)、防火墙等处理:
关闭windows/linux防火墙: windows:右键“网络” ,linux: service iptables stop
Mysql允许远程连接(windowos/linux):
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;
主机(以下代码和操作 全部在主机windows中操作):
my.ini
[mysqld]
id
server-id=1
二进制日志文件(注意是/ 不是)
log-bin="D:/MySQL/MySQL Server 5.5/data/mysql-bin"
错误记录文件
log-error="D:/MySQL/MySQL Server 5.5/data/mysql-error"
主从同步时 忽略的数据库
binlog-ignore-db=mysql
(可选)指定主从同步时,同步哪些数据库
binlog-do-db=test
windows中的数据库 授权哪台计算机中的数据库 是自己的从数据库:
GRANT REPLICATION slave,reload,super ON . TO 'root'@'192.168.0.102' IDENTIFIED BY 'root';
flush privileges ;
查看主数据库的状态(每次在左主从同步前,需要观察 主机状态的最新值)
show master status; (mysql-bin.000001、 107)
从机(以下代码和操作 全部在从机linux中操作):
my.cnf
[mysqld]
server-id=2
log-bin=mysql-bin
replicate-do-db=test
linux中的数据 授权哪台计算机中的数控 是自己的主计算机
CHANGE MASTER TO
MASTER_HOST = '192.168.0.103',
MASTER_USER = 'root',
MASTER_PASSWORD = 'root',
MASTER_PORT = 3306,
master_log_file='mysql-bin.000002',
master_log_pos=1126;
如果报错:This operation cannot be performed with a running slave; run STOP SLAVE first
解决:STOP SLAVE ;再次执行上条授权语句
开启主从同步:
从机linux:
start slave ;
检验 show slave status \G
主要观察: Slave_IO_Running和 Slave_SQL_Running,确保二者都是yes;如果不都是yes,则看下方的 Last_IO_Error。
本次 通过 Last_IO_Error发现错误的原因是 主从使用了相同的server-id,
检查:在主从中分别查看serverid: show variables like 'server_id' ;
可以发现,在Linux中的my.cnf中设置了server-id=2,但实际执行时 确实server-id=1,
原因:可能是 linux版Mysql的一个bug,也可能是 windows和Linux版本不一致造成的兼容性问题。
解决改bug: set global server_id =2 ;
stop slave ;
set global server_id =2 ;
start slave ;
show slave status \G
演示:
主windows =>从
windows:
将表,插入数据
观察从数据库中该表的数据
```