《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
…
1 row in set (0.00 sec)
// 出现下面两个说明配置正确
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
关闭master数据库的只读设置
mysql> unlock tables;
存储引擎
InnoDB特性
MySQL5.5版本后,MySQL的默认内置存储引擎已经从MyISAM变成InnoDB
-
支持事务;
-
行级锁定(更新数据时一般指锁定当前行):通过索引实现、全表扫描忍让时表锁、注意间隙所的影响;
-
读写阻塞与事务的隔离级别相关;
-
具有非常高的缓存特性(既能缓存索引、也能缓存数据);
-
这个表和主键以组(Cluster)的方式存储、组成一颗平衡树;
-
所有的辅助索引(secondary indexes)都会保存主键信息;
-
支持分区、表空间类似与oracle 数据库;
-
支持外键约束、不支持全文检索(5.5.5之前的MyISAM支持全文检索、5.5.5之后就不在支持);
-
相对MyISAM而言、对硬件的要求比较高
MyISAM特性
-
不支持事务
-
表级锁定,数据更新时锁定整个表:其锁定机制是表级锁定,这虽然可以让锁定的实现成本很小但是也同时大大降低了其并发性能。
-
读写互相阻塞:不仅会在写入的时候阻塞读取,myisam还会在读取的时候阻塞写入,但读本身并不会阻塞另外的读。
-
只会缓存索引:MyISAM可以通过key_buffer_size缓存索引,以大大提高访问性能,减少产品IO,但是这个缓存区只会缓存索引,而不会缓存数据。
-
读取速度较快,占用资源相对少。
-
不支持外键约束,但支持全文索引。
修改slave数据库存储引擎
mysql> show variables like ‘%storage_engine%’;
±---------------------------------±-------+
| Variable_name | Value |
±---------------------------------±-------+
| default_storage_engine | InnoDB |
| default_tmp_storage_engine | InnoDB |
| disabled_storage_engines | |
| internal_tmp_disk_storage_engine | InnoDB |
±---------------------------------±-------+
4 rows in set (0.00 sec)
// 修改配置文件
$ vim /etc/my.ini
[mysqld]
default-storage-engine=MyISAM
$ systemctl restart mysqld
mysql> show variables like ‘%storage_engine%’;
±---------------------------------±-------+
| Variable_name | Value |
±---------------------------------±-------+
| default_storage_engine | MyISAM |
| default_tmp_storage_engine | InnoDB |
| disabled_storage_engines | |
| internal_tmp_disk_storage_engine | InnoDB |
±---------------------------------±-------+
4 rows in set (0.00 sec)
修改表存储引擎
如果是slave数据库的表是MyISAM,master数据库的表是InnoDB。直接覆盖master数据库来同步数据的话,slave数据库表的存储引擎也将会同步变成InnoDB。扩展:InnoDB一棵B+树可以存放多少行数据?