MySQL主从数据库

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 主从

## Centos7 安装mysql

MySQL官网下载地址

http://dev.mysql.com/downloads/mysql/

### Mysql安装

```

(1)# rpm -qa | grep mariadb  

```

卸载mariadb

```

(2)   # rpm -e --nodeps mariadb-libs  

```

将下载的安装包拷贝到centos中解压

```

(3)   # tar -xf mysql-5.7.28-1.el6.x86_64.rpm-bundle.tar

```

在安装目录下执行rpm安装

```

# rpm -ivh mysql-community-common-5.7.28-1.el6.x86_64.rpm

# rpm -ivh mysql-community-libs-5.7.28-1.el6.x86_64.rpm

# rpm -ivh mysql-community-client-5.7.28-1.el6.x86_64.rpm

# rpm -ivh mysql-community-server-5.7.28-1.el6.x86_64.rpm

```

### 可能遇到的其他依赖和问题

```

# yum install net-tools -y

# yum install perl -y

```

安装server可能遇到 检查签名

解决办法

```

# rpm -ivh mysql-community-server-5.7.28-1.el6.x86_64.rpm --force --nodeps

```

修改/etc/my.cnf文件,在[mysqld]节点下添加如下配置

```

[mysqld]

explicit_defaults_for_timestamp=true //显示指定默认值为timestamp类型的字段

```

查看datadir的值:

```

[mysqld]

datadir=/var/lib/mysql

```

初始化数据库

```

# mysqld --initialize --user=mysql

```

查看生成的临时密码

```

# cat /var/log/mysqld.log  

```

启动mysql服务

```

# service mysqld start

```

登录mysql

```

# mysql -uroot -p     (输入临时密码)

```

修改root用户密码

```

mysql> set password = password("000000");

```

查看字符编码

```mysql

show variables like "%char%";

```

永久修改字符编码

```mysql

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

[mysqld]

character_set_server=utf8

collation-server=utf8_general_ci

```

修改已有库和表的编码

```mysql

mysql> alter database test character set 'utf8';

Query OK, 1 row affected (0.01 sec)

mysql> alter table testconvert to character set 'utf8';

Query OK, 1 row affected (0.09 sec)

Records: 1 Duplicates: 0 Warnings: 0

```

### MySQL的用户管理

(1)MySQL的用户管理在 mysql库中的user表中

  需要了解的列: Host,User, authentication_string等, 可通过 desc user 查看user表结构

(1)相关命令

| 命令                                                         | 描述                                                         | 备注                                                         |

| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |

| create user zhang3 identified by '123123';                   | 创建名称为zhang3的用户,密码设为123123;                     |                                                              |

| select host,user,password,select_priv,insert_priv,drop_priv  from mysql.user; | 查看用户和权限的相关信息                                     |                                                              |

| set password  =password('123456')                            | 修改当前用户的密码                                           |                                                              |

| update  mysql.user set authentication_string=password('123456') where user='li4'; | 修改其他用户的密码  注意:mysql 5.7 通过authentication_string表示密码列 | 所有通过user表的修改,必须用flush privileges;命令才能生效    |

| update  mysql.user set user='li4' where user='wang5';        | 修改用户名                                                   | 所有通过user表的修改,必须用flush privileges;命令才能生效    |

| drop  user li4                                               | 删除用户                                                     | 不要通过delete from user  u where user='li4' 进行删除,系统会有残留信息保留。 |

修改用户密码

```mysql

update mysql.user set authentication_string=password('123456') where user='li4';

```

注意:所有通过user表的修改,必须用flush privileges;命令才能生效

远程工具访问

当前root用户对应的host值为localhost,意味着只允许本机连接

```mysql

mysql> update user set host='%' where user = 'root';

```

需要将host的值修改为%,表示允许所有远程通过 TCP方式的连接

### MYSQL的权限管理

#### 授予权限

| 命令                                                         | 描述                                                         |

| ------------------------------------------------------------ | ------------------------------------------------------------ |

| grant 权限1,权限2,…权限n  on 数据库名称.表名称 to  用户名@用户地址 identified by ‘连接口令’ | 该权限如果发现没有该用户,则会直接新建一个用户。  示例:  grant select,insert,delete,drop on atguigudb.* to  li4@localhost ;  给li4用户用本地命令行方式下,授予atguigudb这个库下的所有表的插删改查的权限。 |

| grant all privileges on *.* to joe@'%' identified by '123';  | 授予通过网络方式登录的的joe用户 ,对所有库所有表的全部权限,密码设为123. |

####  收回权限

| 命令                                                         | 描述                                | 备注 |

| ------------------------------------------------------------ | ----------------------------------- | ---- |

| show grants                                                  | 查看当前用户权限                    |      |

| revoke [权限1,权限2,…权限n]  on   库名.表名   from 用户名@用户地址 ; | 收回权限命令                        |      |

| REVOKE ALL PRIVILEGES ON mysql.* FROM joe@localhost;         | 收回全库全表的所有权限              |      |

| REVOKE select,insert,update,delete ON mysql.* FROM  joe@localhost; | 收回mysql库下的所有表的插删改查权限 |      |

提示:权限收回后,必须用户重新登录后,才能生效。

### 主从复制

#### 主从复制基本原理

![image-20210714083828597](C:\Users\vampire\AppData\Roaming\Typora\typora-user-images\image-20210714083828597.png)

> 1)    master将改变记录到二进制日志(binary log)。

> 这些记录过程叫做二进制日志事件,binary log events;

> 不管使用何种存储引擎,在server层都可以开启binlog日志功能。binlog会记录所有的逻辑操作,并且是采取追加写的形式,将写操作命令,记录在一个二进制文件中。因此binlog日志通常用于恢复数据,或者是主从复制。

> 2)    slave将master的binary log events拷贝到它的中继日志(relay log);  

> 3)    slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步的且串行化的

#### 复制的基本原则

1)   每个slave只有一个master

2)   每个slave只能有一个唯一的服务器ID

3)   每个master可以有多个salve

#### 一主(hadoop01)一从(hadoop02)

1)    修改主机hadoop01的 my.cnf配置文件

```mysql

[mysqld]

server-id=1   #server实例的id

log-bin=/var/lib/mysql/mysql-bin  #log-bin文件存储位置

# mysql-bin就可以了

binlog_format=ROW  # 设置log-bin格式 STATEMENT  ROW  MIXED  

```

 

\#可选的配置

```mysql

binlog-ignore-db=mysql # 设置不要复制的数据库

binlog-do-db=xxx # 设置需要复制的主数据库名字

```

注意:修改完后重启MySQL服务

2)    修改从机hadoop02的my.cnf 配置文件

```mysql

[mysqld]

server-id=2  #server实例的id

relay-log=mysql-relay  #中继日志

```

注意:修改完后重启MySQL服务

3)    在主机hadoop01上建立账户并授权从机slave

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'从机器数据库IP' IDENTIFIED BY '密码';

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'10.35.202.103' IDENTIFIED BY '000000';

 

4)    查询注解hadoop01 的状态

mysql> show master status ;

                             

注意:记录下File 和Position的值,切记不要再操作主机MySQL,防止主机的File和Position  

  值发生变化

5)    在从机hadoop02上配置需要复制的主机

CHANGE MASTER TO MASTER_HOST='主机IP',

   MASTER_USER='主机创建好的用户',

   MASTER_PASSWORD='密码',

   MASTER_LOG_FILE='File名1字',

   MASTER_LOG_POS=Position数字;

mysql> CHANGE MASTER TO MASTER_HOST='10.35.202.102',

   MASTER_USER='slave',

   MASTER_PASSWORD='000000',

   MASTER_LOG_FILE='mysql-bin.000002',

   MASTER_LOG_POS=450;

6)    在从机hadoop101上启动主从复制功能

mysql> start slave;

7)    在从机hadoop101查看主从复制状态

mysql> show slave status\G;

主要查看两个参数:  

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

8)    测试主从

在主机hadoop100上新建库、新建表、插入数据,查看从机是否复制

9)    在从机hadoop101停止主从

mysql> stop slave ;

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
2月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
2月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
2月前
|
SQL 关系型数据库 MySQL
Mysql数据恢复—Mysql数据库delete删除后数据恢复案例
本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何操作。需要恢复误删除的数据。 在本案例中的mysql数据库未进行备份,也未开启binlog日志,无法直接还原数据库。
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
2月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
126 3
|
2月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
3月前
|
存储 运维 关系型数据库
从MySQL到云数据库,数据库迁移真的有必要吗?
本文探讨了企业在业务增长背景下,是否应从 MySQL 迁移至云数据库的决策问题。分析了 MySQL 的优势与瓶颈,对比了云数据库在存储计算分离、自动化运维、多负载支持等方面的优势,并提出判断迁移必要性的五个关键问题及实施路径,帮助企业理性决策并落地迁移方案。
|
2月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
390 7
|
2月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(上)
最终建议:当前系统是完美的读密集型负载模型,优化重点应放在减少行读取量和提高数据定位效率。通过索引优化、分区策略和内存缓存,预期可降低30%的CPU负载,同时保持100%的缓冲池命中率。建议每百万次查询后刷新统计信息以持续优化
209 6

热门文章

最新文章

推荐镜像

更多