mysql

11. MySQL引擎MyISAM与InnoDB讲解  吧

      1) MyISAM引擎:  <

      默认表类型,它是基于传统的ISAM类型, ISAM是IndexedSequential Access Method (有 索引的顺序访问方法)的缩写, 它是存储记录和文件的标准方法不是事务安全的,而且不支持外键,如B.  果执行大量的select, insert MxISAM 比较适合。

      I2) InnoDB 引擎:

      支持事务安全的引擎,支持外键、行锁、事务是他的最大特点。

      Innodb最初是由innobase Oy公司开发,2005年10月由oracle公  三司并购,目前innodb采用双授权,一个是GPL授权,一个是商业授权。如果有大量的update和insert,建议使用InnoDB,特别是针对多个并发和QPS较高的情况。

3)总体来讲:

       InnoDB和MyISAM是在使用MyfQL最常用的两个表类型,各有优正在观看

      缺点,视具体应用而定。基本的差别为: MyISAM 类型不支持事务处

      理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,  三其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。

      ①MyISAM适合: (1) 做很多count的计算; (2)插入不频繁, 查询非常频繁; (3)没有事务。

show engines;查看引擎
show variables like '%storage_engine%'
show create tables t;查看表使用的引擎
修改默认引擎
修改配置文件
default_storage_engine             = InnoDB

alter table  name engine=InnoDB;

如果添加引擎报错,删除数据目录ib_logfile0,ib_logfile1文件即可

[mysql]
port                               = 13007
socket  = /tmp/sgrdb.sock
default_character_set              = UTF8
no_auto_rehash


[mysqld]
############# GENERAL #############
user                               = sgrdb
port                               = 13007
default_storage_engine             = InnoDB
bind_address                       = 0.0.0.0
character_set_server               = UTF8
performance_schema                 = 1
connect_timeout                    = 8
local_infile                       = 1
lower_case_table_names             = 1
join_buffer_size                   = 8M
sort_buffer_size                   = 8M
interactive_timeout                = 31536000
wait_timeout                       = 31536000
safe_user_create                   = 1
binlog-ignore-db=dbscale_tmp
log_bin_trust_function_creators
group_concat_max_len = 200000
autocommit=1
transaction-isolation=READ-COMMITTED
############# Dir ##############
log_slave_updates=1
slow_query_log=/data/mysqldata/sgrdb/data13007
basedir     = /app/dbcluster/sgrdb/smartsql3.0
datadir    = /data/mysqldata/sgrdb/data13007
tmpdir    = /data/mysqldata/tmp
slave_load_tmpdir  = /data/mysqldata/sgrdb/tmp
innodb_data_home_dir  = /data/mysqldata/sgrdb/data13007
innodb_log_group_home_dir  = /data/mysqldata/sgrdb/data13007/log
log_bin        = /data/mysqldata/sgrdb/data13007/log/smartsql-bin
relay_log      = /data/mysqldata/sgrdb/data13007/log/relay-log
log_error      = /data/mysqldata/sgrdb/data13007/log/error.log
slow_query_log_file  = /data/mysqldata/sgrdb/data13007/log/slow.log
general_log_file = /data/mysqldata/sgrdb/data13007/log/general.log

############# MyISAM #############
delayed_insert_timeout             = 300
key_buffer_size                    = 32M
myisam_recover       = FORCE,BACKUP
myisam_sort_buffer_size            = 64M

############# SAFETY #############
#live_max_allowed                   = 1024M
max_allowed_packet                 = 1024M
max_connect_errors                 = 1000000
skip_name_resolve
#sql_mode                           = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE
innodb                             = FORCE
innodb_strict_mode                 = 1

sql_mode=''

############# BINARY LOGGING #############
expire_logs_days                   = 10
sync_binlog                        = 1
binlog_format                      = row

############# REPLICATION #############
#read_only                         = 1
skip_slave_start                   = 1
max_binlog_size                    = 200M
sync_master_info                   = 1
sync_relay_log                     = 1
sync_relay_log_info                = 1
server_id                          = 1
relay_log_index                    = /data/mysqldata/sgrdb/data13007/log/relay-log.index
log_bin_index                     =/data/mysqldata/sgrdb/data13007/log/smartsql-bin.index

slave_skip_errors=1032,1062

############# CACHES AND LIMITS #############
tmp_table_size                     = 1G
max_heap_table_size                = 1G
query_cache_type                   = 0
query_cache_size                   = 0
max_connections                    = 1000
max_user_connections               = 0
thread_cache_size                  = 60
open_files_limit                   = 65535
table_definition_cache             = 1024
table_open_cache                   = 10000
slave_net_timeout                  = 60
thread_stack                       = 512K

############# INNODB #############
innodb_adaptive_flushing           = 1
innodb_buffer_pool_instances       = 4
innodb_data_file_path              = ibdata1:64M;ibdata2:16M:autoextend
innodb_flush_method                = O_DIRECT
innodb_log_files_in_group          = 4
innodb_log_file_size               = 1500M
innodb_flush_log_at_trx_commit     = 1
innodb_file_per_table              = 1
innodb_buffer_pool_size            = 12G
innodb_file_format                 = Barracuda
innodb_file_io_threads             = 4
innodb_lock_wait_timeout           = 5
innodb_log_buffer_size             = 4M
innodb_old_blocks_time             = 1000
innodb_open_files                  = 60000
innodb_print_all_deadlocks         = 1
innodb_purge_threads               = 1
innodb_read_ahead_threshold        = 0
innodb_read_io_threads             = 8
innodb_rollback_on_timeout         = 0
innodb_spin_wait_delay             = 6
innodb_stats_on_metadata           = 0
innodb_thread_concurrency          = 256
innodb_use_native_aio              = 0
innodb_write_io_threads            = 8
innodb_support_xa                  = 1

############# LOGGING #############
#log_queries_not_using_indexes      = 1
slow_query_log                     = 1
#general_log                        = 0
#log_slow_admin_statements          = 1
#long_query_time                    = 8


[mysqld_safe]
datadir                            = /data/mysqldata/sgrdb/data13007

MySQL数据库主从复制原理  

      Mysgl主从同步其实是-一个 异步复制的过程,要实现复制首先需要在master上开启bin-log日志功能,整个过程需要开启3个线程,分别是Master开启I0线程,slave开启I0线程和SQL线程。

    a)在从服务器执行slave start,从服务器上IO线程会通过授权的用户连接上master,并请求master从指定的文件和位置之后发送              bin-log日志内容。

      b) Master 服务器接收到来自slave 服务器的I0线程的请求后, master服务器上的I0线程根据slave服务器发送的指定bin-log

      日志之后的内容,然后返回给slave端的I0线程。(返回的信息中除了bin-log日志内容外,还有本次返回日志内容后在master服务器端的新的binlog文件名以及在binlog中的下一个指定更新位置。)

      c) Slave的IO线程接收到信息后,将接收到的日志内容依次添加到slave端的relay-log文件的最末端,并将读取到的Master端             的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master“我需要从某个bin-log           的哪个位置开始往后的日志内容,请发给我”;
    d) Slave的Sgl线程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行           的内容,并在自身执行。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凤舞飘伶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值