MySQL配置学习

安装与配置

使用apt 安装 mysqlapt install mysql,其中二进制文件放置在/usr/bin/mysql,配置文件在/etc/mysql
打开配置文件vim /etc/mysql/mysql.conf.d/mysqld.cnf,可以看到默认的参数设置:

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql

对应了mysql启动的一些参数。

在这里进行一些修改,使其能够通过外部ip进行访问:

  • 注释掉bind-address,或者修改为0.0.0.0
  • 本地进入mysql后选择mysql库,执行update user set host='%' where user='root';,使root用户可以在任何地方登陆
  • 重启mysql service mysql restart

引擎

InnoDB

InnoDB是MySQL的默认引擎,主要拥有以下几个功能:

  • ACID事务
  • 存储过程
  • 视图
  • 行级锁定
  • 支持外键

应用场景:

  • 以INSERT、UPDATE为主的应用。
  • 更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。
  • 事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。
  • 自动灾难恢复。与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。
  • 外键约束。MySQL支持外键的存储引擎只有InnoDB。

注意点:

  • 对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务。
  • InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。
  • 行级锁只在涉及对索引字段操作的情况下,其余情况都会锁全表。

MyISAM

  • 相比于InnoDB,MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持。
  • 如果执行大量的SELECT,MyISAM是更好的选择。
  • AUTO_INCREMENT性能上MyISAM更快,并且支持复合主键自增。
  • MyISAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。

区别

  • InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;
  • InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;
  • Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高;

主从同步

主服务器配置

首先修改主从服务器的配置文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf
server-id               = 128 #这个通常设置为ip最后一段
log_bin                 = /var/log/mysql/mysql-bin.log #二进制文件路径
binlog_do_db            = test_copy #设置要同步的数据库

在主服务器上添加一个sync用户用于从数据库访问
GRANT REPLICATION SLAVE ON *.* to 'sync'@'%' identified by 'sync_pass';
然后重启服务器
使用SHOW MASTER STATUS查看主服务器状态:

+------------------+------------+----------------+--------------------+---------------------+
| File             |   Position | Binlog_Do_DB   | Binlog_Ignore_DB   | Executed_Gtid_Set   |
|------------------+------------+----------------+--------------------+---------------------|
| mysql-bin.000002 |        154 | test_copy      |                    |                     |
+------------------+------------+----------------+--------------------+---------------------+

从服务器配置

修改配置:

server-id=1

然后配置同步参数

change master to MASTER_HOST='192.168.88.128', MASTER_USER='sync',MASTER_PASSWORD='sync_pass';

启动从数据库服务

START SLAVE
SHOW SLAVE STATUS\G
***************************[ 1. row ]***************************
Slave_IO_State                | Waiting for master to send event
Master_Host                   | 192.168.88.128
Master_User                   | sync
Master_Port                   | 3306
Connect_Retry                 | 60
Master_Log_File               | mysql-bin.000002
Read_Master_Log_Pos           | 154
Relay_Log_File                | DESKTOP-0ODM788-relay-bin.000002
Relay_Log_Pos                 | 320
Relay_Master_Log_File         | mysql-bin.000002
Slave_IO_Running              | Yes
Slave_SQL_Running             | Yes

这里的关键点为Slave_IO_RunningSlave_SQL_Running都需要为Yes,一个为No则未配置成功。
如需修改从服务器的配置需要先停掉同步STOP SLAVE,然后使用change master to master_log_file='mysql-bin.000002',master_log_pos=154;进行修改。

确认同步成功:
主服务器执行

mysql root@localhost:test_copy> select * from t_test
+-----------+
|   test_id |
|-----------|
|      1111 |
+-----------+

从服务器执行

mysql (none)@localhost:test_copy> select * from t_test
+---------+
| test_id |
+---------+
| 1111    |
+---------+

主服务器执行插入操作

mysql root@localhost:test_copy> INSERT INTO t_test VALUES (1)
Query OK, 1 row affected
Time: 0.011s

从服务器查询

mysql (none)@localhost:test_copy> select * from t_test
+---------+
| test_id |
+---------+
| 1111    |
| 1       |
+---------+
2 rows in set

数据备份

使用mysqldumps进行数据备份操作:

mysqldump -uroot --all-databases >/tmp/all.sql #导出所有数据库
mysqldump -uroot --databases dbname1 dbname2 >/tmp/all.sql #导出特定的数据库

数据恢复mysql -u root -p <backup.sql
或者登陆到数据库后使用source backup.sql进行还原

分区表

分区类型

  • RANGE 分区:基于属于一个给定连续区间的列值,把多行分配给分区。
  • LIST 分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。
  • HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含MySQL中有效的、产生非负整数值的任何表达式。
  • KEY分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL服务器提供其自身的哈希函数。必须有一列或多列包含整数值。
  • 复合分区:基于RANGE/LIST 类型的分区表中每个分区的再次分割。子分区可以是 HASH/KEY 等类型。

使用RANGE进行分区

CREATE TABLE t5(id INT,dt DATETIME NOT NULL)
PARTITION BY RANGE (TO_DAYS(dt)) (
    PARTITION p0 VALUES LESS THAN (TO_DAYS('2017-09-01')),
    PARTITION p1 VALUES LESS THAN (TO_DAYS('2017-10-01')),
    PARTITION p2 VALUES LESS THAN (TO_DAYS('2017-11-01')),
    PARTITION p3 VALUES LESS THAN MAXVALUE);

Range需要分区字段为int

使用LIST进行分区

CREATE TABLE t_partition_range(id INT NOT NULL ,number INT NOT NULL)
PARTITION BY LIST(number)(
    PARTITION p0 VALUES IN  (1),
    PARTITION p1 VALUES IN  (2),
);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容