码迷,mamicode.com
首页 > 数据库 > 详细

MYSQL汇总

时间:2017-10-22 21:09:08      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:ash   指针   buffer   标准   blob   调整   secure   实例化   xxxxxx   

一.1.1 MYSQL

一.1.1.1 基础特性

1)性能卓越,服务稳定,很少出现异常宕机;

2)开放源代码且无版权制约,自主性强,使用成本低;

3)历史悠久,社区及用户非常活跃,遇到问题,可快速获得帮助;

4)软件体积小,安装使用简单,易于维护,安装及维护成本低;

5)支持多种操作系统,提供多种API接口,支持多种开发语言,对PHP语言语言无缝支持;

6)品牌口碑效应。

 

 

 

一.1.1.2 基础说明

:数据库重新初始化要切记先删除data对应目录的数据。

 

企业环境创建数据库:

a.根据开发的程序确定字符集(建议UTF8);

b.编译时指定字符集,例如:

-DDEFAULT_CHATSET=utf8 \

-DDEFAULT_CHLLATION=utf8_general_ci \

c.当需要的字符集不同于默认字符集时,指定字符集创建数据库即可。

 

企业环境数据库授权状态:

a.博客、CMS等产品的数据库授权:

对于web连接用户尽量采用最小化原则,较多开源软件都是web界面安装,需要SELECTINSERTUPDATEDELETECREATEDROP(较危险)权限;

> grant select,insert,update,delete,create,drop on blog.* to ‘blog’@’10.0.0.%’ identified by ‘000000’;

b.生成数据库表后,要收回CREATEDROP权限;

> REVOKE CREATE on blog.* FROM ‘blog’@’10.0.0.%’;

> REVOKE DROP on blog.* FROM ‘blog’@’10.0.0.%’;

c.生产环境针对主库(写为主读为辅)用户的授权;

主库

> GRANT SELECT,INSERT,UPDATE,DELETE ON ‘blog’.* TO ‘blog’@’10.0.0.%’ identified by ‘000000’;

从库

> GRANT SELECT ON ‘blog’.* TO ‘blog’@’10.0.0.%’ identified by ‘000000’;

 

mysql记录UUID的文件

[root@M-mysql /r2/mysqldata]# cat auto.cnf

[auto]

server-uuid=fda28692-9e31-11e7-bf34-000c2907c998

 

数据库操作记录文件

/root/.mysql_history

 

mysql参数说明

-V     --version       

查看版本;

-e

实现非交换式对话;

-U    

当发出没有WHERELIMIT关键字的UPDATEDELETE时,mysql程序将拒绝执行;

 

防止数据库误操作

# echo “alias mysql=’mysql -U’” >>/etc/profile

# source /etc/profile

 

不重启数据库调整参数

> set global key_buffer_size=10*1024*1024;

# 此操作为全局参数设置,设置完立即生效,重启MySQL后失效,所以若想不重启修改数据库参数并永久生效,可用此操作设置完后再修改对应的配置文件里参数。

 

登陆数据库后执行系统命令

> system ls -la  /tmp

 

ALL PRIVILEGES包括如下权限

 SELECT, INSERT,UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE

 

 

一.1.1.3 配置说明

[root@Q5 ~/ka_bak]# cat my.cnf

[client]

port = 3306

socket = /usr/local/mysql/data/mysql.sock

[mysqld]

port = 3306

socket = /usr/local/mysql/data/mysql.sock

max_connections=1000   #最大连接数

max_connect_errors=1000  

#对于同一主机,若超出1000中段错误连接,则该主机将被禁止连接;如需解禁,执行FLUSH HOST

init-connect=‘SET NAMES utf8‘

interactive_timeout=31536000

datadir=/r2/mysqldata

basedir=/usr/local/mysql

log-error=/r2/mysqldata/mysql-error.log

pid-file=/r2/mysqldata/mysql.pid

user=mysql

key_buffer_size = 74M    

#指定用于索引的缓冲区大小,对于4G内存该参数可设置为256M384M

max_allowed_packet = 64M

table_open_cache = 64

#mysql打开表时,会读入数据到table_open_cache缓存中,当在缓存中找不到相应信息时,去磁盘上读取

sort_buffer_size = 2M   

#查询排序时所能使用的缓冲区大小。该参数对应的分配内存是每连接独占,若有100个连接,实际分配的总共排序缓冲区大小为100x6=600M;对于内存为4G服务器推荐设置为6-8M

read_buffer_size = 2M

#读查询所能使用的缓冲区大小,该参数对应的分配内存也是连接独享

read_rnd_buffer_size = 8M

#随机读缓冲区大小

myisam_sort_buffer_size = 64M

thread_cache_size = 8

query_cache_size = 2M

#指定单个查询能使用的缓冲区大小

expire_logs_days = 18

#超过18天的binlog删除

log-bin=mysql-bin

binlog_format=mixed

innodb_buffer_pool_size = 3072M

sync_binlog=0

query_cache_type= ON

query_cache_size= 2M

gtid_mode=ON                                                                                                                                                                                         

enforce_gtid_consistency=ON

slave_parallel_type=LOGICAL_CLOCK

slave_parallel_workers=16                                                           

master_info_repository=TABLE

relay_log_info_repository=TABLE

relay_log_recovery=ON

innodb_log_file_size = 256M

innodb_log_buffer_size = 8M

innodb_flush_log_at_trx_commit = 2

sql_mode=""

[mysqldump]

quick

max_allowed_packet = 16M

[mysql]

no-auto-rehash

[myisamchk]

key_buffer_size = 8M

sort_buffer_size = 8M

read_buffer = 2M

write_buffer = 2M

[mysqlhotcopy]

interactive-timeout

 

 

 

 

 

 

 

 

 

 

一.1.1.4 SQL语言

一.1.1.4.1 SQL基础

 

介绍

全称为结构化查询语言(Structured Query Language,是一种对关系数据库中数据进行定义和操作的语言方法,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名,是大多数关系数据库管理系统所支持的工业标准。

 

分类

数据查询语言(DQL

DQLData Query Language),也称为数据检索语言,作用是从表中获取数据,确定数据怎样在应用程序给出,使用动词有SELECT,保留字有WHEREORDER BYGROUP BYHAVING

数据操作语言(DML    #常见

DMLData Manipulation Language,也称为动作查询语言,使用动词有INSERTUPDATEDELETE,分别用于添加、修改、删除表数据等操作;

事物处理语言(TPL

其语句能确保被DML语句影响的表的所有行及时得以更新,TPL语句包括、BGEINTRANSACTIONCOMMITROLLBACK.

数据控制语言(DCL    #常见

DCLData Control Language),其语句通过GRANTREVOKE获得许可;

数据定义语言(DDL    #常见

DDLData Definition Language),其语句包括动词CREATEDROP,创表、删表,为表加入索引等;

指针控制语言(CCL

CCLCursor Control Language),语句包括DECLARE CURORFETCH INTOUPDATE WHERE CURRENT,用于对一个或多个表单独行的操作。

一.1.1.4.2 SQL命令

注:

a.进行部分命令操作后应刷新授权 > flush privileges;

b.部分命令用小写执行时会报错;

一.1.1.4.2.1 帮助语句

注:一步一步执行以下命令,可根据帮助命令提供的信息得出所需操作对应执行的命令。

> help;

> help show;

> help revoke;

> help show grants;

> help change master to;

一.1.1.4.2.2 查看语句

查看数据库

> show databases;

查看当前会话库状态

> show status;

查看全局状态

> show global status;

查看变量

> show variables;

匹配查看变量

> show variables like ‘key_buffer%’;

查看正在执行的完整SQL语句

> show full processlist;

匹配查看库

> show databases like ‘%zi%‘;

查看当前库

> select database();

查看字符编码

> show variables like ‘%character%‘;

查看当前版本

> select version();

查看当前用户

> select user();

查看当前时间

> select now();

查看数据库引擎

> show engines;

查看建库语句

> show create database kazihuo\G;

查看建表语句

> show create table kazihuo\G;

查看表

> show tables;

查看表结构

> desc mysql.user;

 

 

一.1.1.4.2.3 查询语句

查询用户信息

mysql> select user,host from mysql.user;

查询授权列表

> SELECT DISTINCT CONCAT(‘User: ‘‘‘,user,‘‘‘@‘‘‘,host,‘‘‘;‘) AS query FROM mysql.user;

 

> select * from mysql.user where user=‘root‘ \G;

查看指定用户授权信息

mysql> SHOW GRANTS FOR ‘root‘@‘localhost‘;

查询表数据

> select *from student;

指定字段查询

> select id,name from student;

条件查询

> select *from student limit 2;             #只查询2条记录

> select *from student where id=1;         #指定字段数据查询

> select *from student where id>2 and id <4;

> select *from student order by age asc;    #正序

> select *from student order by age desc;   #倒叙

多表查询

> select student.Sno,student.Sname,course.Cname,SC.Grade from student,course,SC where student.Sno=SC.Sno and course.Cno=SC.Cno;

查看sql语句执行计划

> explain select *from test where name=’kazihuo’\G;

 

一.1.1.4.2.4 使用语句

连接库

> use kazihuo;

 

一.1.1.4.2.5 创建语句

创建用户

> create user luomr@localhost identified by ‘000000‘;

创库

> create database kazihuo;

创建指定字符集数据库(默认为拉丁字符集)

> create database kazihuo_gbk DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

> create database kazihuo_utf8 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

创表

mysql> create table student(

    -> id int(4) not null,

    -> name char(20) not null,

    -> age int(3) not null default ‘0‘,

    -> dept varchar(16) default null

    -> );

> create table worker(id int,name varchar(10),sex enum(‘man‘,‘woman‘));

 

一.1.1.4.2.6 插入语句

 

指定字段插入数据

> insert into student(id,name) values(1,‘kazihuo‘);

不指定字段将按照表格式依次插入数据

> insert into student values(2,‘ka‘,23,‘boy‘);

多条记录插入

mysql> insert into student values(3,‘zi‘,3,‘man‘),(4,‘huo‘,33,‘superman‘);

 

 

一.1.1.4.2.7 修改语句

修改表

>update dns_domain_info set domain_info=replace(domain_info,"192.168.53.71","10.79.6.52");

> update dns_domain_info set domain_info=‘192.168.11.11‘ where domain_info=‘192.168.101.106‘;

指定字段信息修改表信息

> update student set name=‘tom‘ where id=2;

修改表名

> rename table teacher to teacher1;

> alter table teacher1 rename to teacher;

 

 

 

 

一.1.1.4.2.8 删除语句

删除库

> drop database kazihuo;

删除系统账号

> drop kazihuo ‘root’@’localhost’;

> delete from mysql.user where user=’kazihuo’ and host’localhost’; #drop删除无效时使用

删除指定字符串

#delete from homed_iusm.account_info where nickname like "%test%"

 

一.1.1.4.2.9 清空语句

清空表中所有内容

> truncate table teacher;

> delete from teacher;

# truncate更快,清空物理文件;delete为逻辑清除,按行删;

一.1.1.4.2.10 字段语句

添加字段

指定位置添加,默认为末尾

> alter table student add qq varchar(20) after id;  

> alter table student add qq varchar(20) first;

添加多个字段

> alter table student add qq varchar(20),add grant int;

修改字段

ALTER TABLE 表名

             MODIFY  字段名 数据类型 [完整性约束条件…];

ALTER TABLE 表名

       CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];

ALTER TABLE 表名

      CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

一.1.1.4.2.11 权限语句

用户授权

> GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘luomr‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION;

公司授权

> GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION;

> GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘localhost‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION;

> GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘127.0.0.1‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION;

#所有IP可通过root账号,passwd密码登陆

[root@slave1 src]# mysql -uroot -ppasswd -e "GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘passwd‘ WITH GRANT OPTION"

[root@slave1 src]# mysql -uroot -ppasswd -e "GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘127.0.0.1‘ IDENTIFIED BY ‘passwd‘ WITH GRANT OPTION"

[root@slave1 src]# mysql -uroot -ppasswd -e "GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘‘localhost‘‘ IDENTIFIED BY ‘passwd‘ WITH GRANT OPTION"

局域网内主机授权

# 百分号匹配法

> GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘192.168.11.%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION;

# 子网掩码配置法

> GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘192.168.11.0/24‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION;

 

 

一.1.1.4.2.12 密码操作

 

修改密码

# mysqladmin -uroot -p000000 password ‘111111‘

> update mysql.user set authentication_string=password(‘newpass‘) where user=‘root‘ and host=‘localhost‘;

> set password = password(‘xxxxxxxx‘);

> flush privileges;

 

忘记密码

# /etc/init.d/mysqld stop

# /usr/local/mysql/bin/mysqld_safe --skip-grant-tables --user=mysql &

# 多实例跳过密码启动

#/usr/local/mysql/bin/mysqld_safe --skip-grant-tables --defaults-file=/data/3306/my.cnf &

进入mysql后用update方式设置密码

> flush privileges;

若重新登录mysql时仍不需要密码,则需重启mysql

 

一.1.1.5 数据迁移

 

 

一.1.1.6 数据备份

刷新binlog

# mysqldump -uroot -p000 flush-log

锁表

> flush table with read lock;

解锁

> unlock tables;

一.1.1.6.1 备份命令

生产场景常规备份

# mysqldump -uroot -p000 --set-gtid-purged=OFF --master-data=2 -A -B |gzip> /tmp/bak`date +%F-%T`.sql.gz

# mysqldump -uroot -p000 --all-databases --routines --events >/r2/baksql_`date +"%Y%m%d"`.sql

 

分引擎备份(专业DBA提供)

myisam

# mysqldump -uroot -p000 -A -E -R -F -x --flush-privileges --master-data=1 --hex-blob --set-gtid-purged=OFF >/tmp/`date +%F-%T`_all.sql

innodb(推荐使用)

# mysqldump -uroot -p000 -A -E -R -F --single-transaction --flush-privileges --master-data=1  --hex-blob --set-gtid-purged=OFF|gzip >/tmp/all_`date +%F-%T`.sql.gz

# mysqldump -uroot -p000 -A -E -R -F --single-transaction --flush-privileges --master-data=1  --hex-blob --set-gtid-purged=OFF >/tmp/all_`date +%Y%m%d`.sql

 

 

分库备份

# mysqldump -uroot -p000 --set-gtid-purged=OFF -B $db > "$bakpath"/bak_"$db"_`date +%F-%T`.sql              

# 配合for语句实现分库备份

脚本备份

# mysql -uroot -p000 -e "show databases;"|grep -ivE "database|infor|performance|sys|mysql"|sed ‘s/^/mysqldump -uroot -p000 -B /g‘

命令行执行命令实现分库备份并压缩

# mysql -uroot -p000 -e "show databases;"|grep -ivE "database|infor|performance|sys|mysql"|sed -r ‘s#^([a-zA-Z].*$)#mysqldump -uroot -p000 --set-gtid-purged=OFF -B \1|gzip >/tmp/\1.sql.gz#g‘|bash

 

 

SQL精简(过滤注释)

# egrep -v "#|\*|--|^$" all.sql

 

-set-gtid-purged=OFF 说明

当执行mysqldump不加以上参数时发出警告

 

虽然能备份成功,但是在之后的数据恢复时报错

 

需注释报错行方可成功导入数据,而当加了以上参数时,将不会出现以上问题,同时数据也可正常导入。

MySQL5.6版本后,官方加入了全局事物IDGTID)来强化数据库的主备一致性,故障恢复及容错能力;

 

官方解释:

A global transaction identifier (GTID) is a unique identifier created and associated with each transaction committed on the server of origin (master).

全局事务标识符(GTID)是一个惟一的标识符,它与在源服务器上提交的每个事务相关联()

一.1.1.6.2 mysqldump

部分常用参数说明

-u     --user 
指定连接的用户名;

-p --password       
连接数据库密码

-h --host   
需要导出的主机信息

-P  --port
连接数据库端口号

-A --all-databases 
导出全部数据库;

-B --databases  

表示接多个库,且增加use db、create db的信息(即恢复数据时不需指定库、表);

    -S   --socket    
指定连接mysql的socket文件位置;

  -x --lock-all-tables  
提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个 全局读锁,并且自动关闭--single-transaction和--lock-tables选项;
   -Y --all-tablespaces 
导出全部表空间;

    -F --flush-logs      
开始导出之前刷新日志;
一次导出多个数据库(使用选项--databases或者--all-databases), 将会逐个数据库刷新日志。除使用 --lock-all-tables或者--master-data 外。在这种情况下,日志将会被刷新一次,相应的所有表同时被锁定。因此, 如果打算同时导出和刷新日志应该使用--lock-all-tables或者 --master-data和--flush-logs;

   -d --no-data 
不导出任何数据,只导出数据库表结构;

-t --no-create-info

只备份数据;

-V --version      
输出mysqldump版本信息并退出;

-X --xml       
导出XML格式;

--default-character-set
设置默认字符集,默认值为utf8;
eg:mysqldump -uroot -p --all-databases --default-character-set=latin1

--compact
导出更少的输出信息(用于调试),去掉注释和头尾等结构;

--master-data

binlog位置和文件名追加输入文件,如果为1,将会输出CHANGE MASTER命令;如果为2,输出的 CHANGE MASTER命令前添加注释信息;

--hex-blob

使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使 用该选项,影响到的字段类型有BINARY、VARBINARY、BLOB;

--flush-privileges

在导出mysql数据库之后,发出一条FLUSH PRIVILEGES语句。为了正确 恢复,用于导出mysql数据库和依赖mysql数据库数据的任何时候;

--triggers

导出触发器(默认启用,用--skip-triggers禁用);

-R --routines

导出存储过程以及自定义函数;

-E --events
导出事件;
  -y --no-tablespaces   
不导出任何表空间信息;

 

 

 

 

 

 

 

 


一.1.1.7 数据恢复

一.1.1.7.1 恢复操作

恢复方式

方法一:

mysql>use $db;

mysql>set names utf8;

mysql>source /tmp/bak.sql;

方法二:

#mysql -uroot -p000 $db < bak.sql

一.1.1.7.2 bin-log

基础说明

MySQLbinlog存在于数据库的数据目录下;

其作用是:

用来记录mysql内部增删改查等对mysql数据库有更新的内容的记录。

 

参数说明

-d

截取指定库的binlog

 

 

解析binlog日志

[root@Q5 /r2/mysqldata]# mysqlbinlog mysql-bin.000003 > bin.sql

导出指定库的对应sql操作

# mysqlbinlog -d kazihuo mysql-bin.000010 >kazihuo.sql

一.1.1.7.3 增量恢复
一.1.1.7.3.1 基于位置点

 

指定开始位置和结束位置

# mysqlbinlog msql-bin.000020 --start-position=510 --stop-position=1312 -r pos.sql

# 输出初始位置510,结束位置1312的所有binlog日志到pos.sql;

:结尾日志点将不被包含(即输出1312pos之前的binlog),位置信息点要实际存在。

-r 选项相当于重定向;

 

 

指定开始位置到文件结束

# mysqlbinlog msql-bin.000020 --start-position=510 -r pos510-end.sql

 

同时也可指定库名输出binlog

# mysqlbinlog msql-bin.000020 --start-position=510 -r pos510-end.sql -d kazihuo

 

从文件开头到指定结束位置

一.1.1.7.3.2 基于时间点

一.1.1.8 多实例化

注:多实例执行mysql命令时要指定sock文件。

一.1.1.8.1 配置方案

通过配置多个配置文件及多个启动程序实现多实例方案;

 

配置:

[root@Q1 /]# tree /data/

/data/

├── 3306

│   ├── data       #数据文件

│   ├── my.cnf     #配置文件

│   └── mysql      #启动文件

└── 3307

    ├── data

    ├── my.cnf

    └── mysql

 

配置文件对比

 

 

 

一.1.1.8.2 安装部署

# groupadd mysql

# useradd -r -s /sbin/nologin g mysql mysql

# tar axvf mysql-5.7.18

# mv mysql-5.7.18 /usr/local/mysql

# chown -R mysql.mysql /data

# find /data/ -type f -name “mysql”|xargs ls -l

# find /data/ -type f -name “mysql”|xargs chmod +x

# cd /usr/local/mysql/bin

#./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data

#./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data

 

常用初始化命令

# ./mysqld --initialize-insecure --user=mysql --datadir=/r2/mysqldata --basedir=/usr/local/mysql

 

环境变量

方式一

# echo ‘export PATH=/usr/local/mysql/bin:$PATH ’ >> /etc/profile  

# echo后必须为单引号

# source /etc/profile

方式二

/usr/local/mysql/bin下面命令cp到全局系统命令路径/usr/local/sbin也可,或者做link

 

*************************************************************

a.初始化数据库原因:

初始化的目的是创建基础的数据库文件(生成mysql库表等);

初始化后对应实例数据目录下生成文件;

 

 

一.1.1.8.3 服务启停

:尽量不要野蛮的方式杀死数据库,生产高并发环境可能会引起数据丢失。

 

多实例启动文件的启动mysql

# mysql_safe --defaults-file=/data/3306/my.cnf 2>&1 >/dev/null &

# mysql_safe --defaults-file=/data/3307/my.cnf 2>&1 >/dev/null &

 

多实例启动文件的停止mysql(平滑停止)

# mysqladmin -uroot -p000000 -S /data/3306/mysql.sock shutdown

# mysqladmin -uroot -p000000 -S /data/3307/mysql.sock shutdown

 

一.1.1.8.4 服务登陆

#mysql -uroot -p00000 -S/data/3306/mysql.sock

#mysql -uroot -p00000 -S/data/3307/mysql.sock

 

 

 

 

 

一.1.1.9 问题说明

一.1.1.9.1 登陆报错

问题描述

数据库正常启动,登陆时显示

[root@M-mysql ~]# mysql -uroot -p000000

-bash:mysql:未找到命令

 

解决方案

配置了mysql的环境变量未生效,执行# source /etc/profile

一.1.1.9.2 表操作报错

问题描述

登陆数据库打开表时报错:can’t create/write to file ‘tmp#sql_23e6_0MYI’

 

解决方案

# mkdir /var/lib/mysql/tmp

# chown mysql.mysql /var/lib/mysql/tmp

# vim /etc/my.cnf

tmp=/var/lib/mysql/tmp

# /etc/init.d/mysql restart

 

#查看指定目录大小:

# df -h /tmp

以上问题实操解决

 

一.1.1.9.3 关机卡死

问题描述

虚拟机部署了mysql5.7之后关机卡在如下页面:

 

解决方案

# swapon -s

# free -h

# df -h /dev/shm

# grep -i huge /proc/meminfo

 

查看swap使用超过50%

 

出现此问题可能是服务器内存不足导致,可增大内存或者修改my.cnf将参数要求值降低,可解决此问题。

 

 

 

 

 

 

 

 

 

一.1.1.9.4 删除binlog无法启动

问题描述

当磁盘空间不足,删除mysqldata下的binlog后导致数据库无法正常启动。

 

解决方案

清空binlog索引文件即可

[root@M-mysql /r2/mysqldata]# > mysql-bin.index

 

 

 

 

 

一.1.1.10 主从同步

一.1.1.10.1 主从复制原理

a.slave数据库上执行start slave,开启主从复制开关;

b.slaveI/O线程通过在master上的授权的复制用户权限请求连接master服务器,并请求从指定binlog日志文件的指定位置(日志文件名和位置就是在配置主从复制时执行change master命令时指定的)之后发送binlog日志内容;

c.master收到请求后,负责复制的I/O线程根据请求提供相应binlogslave

d.slave收到信息后,将binlog写入到自身中继日志(Relay Log)文件(MySQL-relay-bin.xxx)的最末端,并将新的binlog文件名和位置记录到master-info文件(便于下次读取masterbinlog日志时能告诉master服务器需要从新binlog日志的哪个文件哪个位置开始请求新的binlog日志内容)。

e.slave通过SQL线程将log文件内容解析成SQL语句并执行,应用完毕后清理用过的日志;

 

说明

从服务器上生成的master.info是给I/O线程使用,relay-log.INFOSQL线程使用。

 

一.1.1.10.2 实现主从同步

 

主库操作

建立从库复制的账号rep

> grant replication slave on *.* to ‘rep‘@‘192.168.11.%‘ identified by ‘master‘;

> show master status;

+------------------+----------+--------------+------------------+---------------------------------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                           |

+------------------+----------+--------------+------------------+---------------------------------------------+

| mysql-bin.000021  |   791|     | fda28692-9e31-11e7-bf34-000c2907c998:1-1132 |

+------------------+----------+--------------+------------------+---------------------------------------------+

# mysqldump -uroot -pmaster -A -E -R -F --single-transaction --flush-privileges --master-data=1  --hex-blob --set-gtid-purged=OFF >/tmp/all_`date +%Y%m%d`.sql

将备份的sql同步到从库

 

说明:当主库备份时加了--master-data=1时,在生成的sql里面包含了对应的binlog信息及指定的position,所有在从库上执行CHANGE MASTER TO时可省略MASTER_LOG_FILE=‘mysql-bin.000021‘,MASTER_LOG_POS=791;

 

从库操作

CHANGE MASTER TO

  MASTER_HOST=‘192.168.11.17‘,

  MASTER_USER=‘rep‘,

  MASTER_PASSWORD=‘master‘,

  MASTER_PORT=3306,

  MASTER_LOG_FILE=‘mysql-bin.000021‘,

  MASTER_LOG_POS=791;

 

> start slave;

 

检验是否成功

> show slave status;

 Slave_IO_Running: Yes

 Slave_SQL_Running: Yes

 Seconds_Behind_Master: 0

当显示以上信息,同时在master上对数据进行操作时,对应的slave数据库有着对应操作的结果体现。

MYSQL汇总

标签:ash   指针   buffer   标准   blob   调整   secure   实例化   xxxxxx   

原文地址:http://www.cnblogs.com/kazihuo/p/7710026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!