<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      Mysql的編譯安裝以及容易介紹

      [摘要]==========MYSQL工作原理圖: 1》數據庫簡介:簡單的說數據庫(database)就是一個存儲數據的倉庫,它將數據按照特定的規律存儲到磁盤上,通過數據庫管理系統,能夠有效的管理存儲在數...
      ==========MYSQL工作原理圖:

      Mysql的編譯安裝以及簡單介紹

      1》數據庫簡介:簡單的說數據庫(database)就是一個存儲數據的倉庫,它將數據按照特定的規律存儲到磁盤上,通過數據庫管理系統,能夠有效的管理存儲在數據庫中 的數據;
      SQL語言: DBMS是通過SQL語言來進行數據庫管理的。SQL語言是一種查詢和設計語言,主要用于存儲數據,查詢數據 更新和管理關系數據庫;
        SQL語言總共分為三個部分

      DDL(Data Definition Language)語句,用于定義數據庫表、試圖索引和觸發器等等
            create
            alter
            drop
            rename
            truncate
            comment
        DML(Data Maniplulation Language)語句用于插入數據,查詢數據、更新數據和刪除數據
            select
            insert
            update
            delete
        DCL(Data Control Language)語句,用于控制用戶的訪問權限
            grant
            revoke

      常見的數據庫系統有哪些:
          1.甲骨文Oracle
          2.IBM的DB2
          3.Sybase
          4.微軟Access和SQL Server
          5.開源PostgreSQL
          6.開源Mysql

      Mysql特性:
          1.跨平臺,支持多種操作系統,AIX FreeBSD HP-UX Linux MacOS NovellNetware OpenBSD Solaris windows 等等
          2.支持多線程,可以充分的利用硬件資源(CPU資源)
          3.支持大型數據庫,可以處理擁有上千萬條大型數據庫。
          4.支持多種插件式存儲引擎

      mysql-server-5.6

          1)InnoDB現在可以限制大量表打開的時候內存占用過多的問題(比如這里提到的)(第三方已有補丁)
          2)InnoDB性能加強。如分拆kernel mutex;flush操作從主線程分離;多個perge線程;大內存優化等
          3)InnoDB死鎖信息可以記錄到 error 日志,方便分析
          4)MySQL5.6支持延時復制,可以讓slave跟master之間控制一個時間間隔,方便特殊情況下的數據恢復。
          5)表分區功能增強
          6)MySQL行級復制功能加強,可以降低磁盤、內存、網絡等資源開銷(只記錄能確定行記錄的字段即可)
          7)Binlog實現 crash-safe
          8)復制事件采用crc32校驗,增強master/slave 復制數據一致性
          9)新增 log_bin_basename (以前variables里面沒有binlog位置信息,對數據庫的監管很不方便)

      2》編譯安裝MYSQL:
          1>安裝依賴包:
            

      yum install gcc gcc-c++ ncurses-devel perl cmake bison

          2>創建用戶:
           

      # groupadd mysql
                   # useradd mysql –g mysql –s /sbin/nologin
                   #mkdir -p /usr/local/mysql //Mysql的安裝目錄
                   #mkdir -p /data/mysqldb  //Mysql數據目錄
                   #mkdir -p /data/mysqldb/binlog //創建BINLOG日志目錄   
                   #mkdir -p /data/mysqldb/log   //創建MYSQL 日常LOG目錄

          3>安裝Mysql:
            

      #tar -xvf mysql-5.6.31.tar.gz             
      #cd mysql-5.6.31
                                 
                                 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \           
                                 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \          
                                 -DSYSCONFDIR=/etc \          
                                 -DDEFAULT_CHARSET=gbk \          
                                 -DDEFAULT_COLLATION=gbk_chinese_ci \          
                                 -DWITH_INNOBASE_STORAGE_ENGINE=1  \          
                                 -DWITH_ARCHIVE_STORAGE_ENGINE=1 \          
                                 -DWITH_BLACKHOLE_STORAGE_ENGINE=1  \          
                                 -DWITH_FEDERATED_STORAGE_ENGINE=1 \          
                                 -DWITH_PARTITION_STORAGE_ENGINE=1  \          
                                 -DMYSQL_DATADIR=/data/mysqldb  \          
                                 -DMYSQL_TCP_PORT=3306  \

      ***注意:重新運行配置,需要刪除CMakeCache.txt文件

      ==========編譯解析:

          #cmake 編譯命令

            -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 設置mysql安裝目錄

            -DMYSQL_UNIX_ADDR=/tmp/mysql.sock 設置監聽套接字路徑,這必須是一個絕對路徑名。默認為/tmp/mysql.sock
            -DSYSCONFDIR=/etc 配置文件放在/etc/下面
            -DDEFAULT_CHARSET=gbk 設置服務器的字符集。
      缺省情況下,MySQL使用latin1的(CP1252西歐)字符集。cmake/character_sets.cmake文件包含允許的字符集名稱列 表。
            -DDEFAULT_COLLATION=gbk_chinese_ci 設置服務器的排序規則。
            -DWITH_INNOBASE_STORAGE_ENGINE=1
            -DWITH_ARCHIVE_STORAGE_ENGINE=1
            -DWITH_BLACKHOLE_STORAGE_ENGINE=1
        存儲引擎選項:
          MyISAM,MERGE,MEMORY,和CSV引擎是默認編譯到服務器中,并不需要明確地安裝。
          靜態編譯一個存儲引擎到服務器,使用-DWITH_engine_STORAGE_ENGINE= 1
      可用的存儲引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEM) (Performance Schema)

            -DMYSQL_DATADIR=/data/mysqldb 設置mysql數據庫文件目錄

            -DMYSQL_TCP_PORT=3306 設置mysql服務器監聽端口,默認為3306

            -DENABLE_DOWNLOADS=1
                     是否要下載可選的文件。例如,啟用此選項(設置為1),cmake將下載谷歌所使用的測試套件運行單元測試

      4> make && make isntall
         5>初始化:
            給Mysql安裝目錄進行授權
              # chown mysql:mysql /usr/local/mysql -R
            給Mysql數據存儲目錄進行授權
              # chown mysql:mysql /data/mysqldb -R
            給Mysl日志目錄進行授權
              #chown mysql:mysql /data/mysqldb/binlog/
              #chown mysql:mysql /data/mysqldb/log/
          開始初始化:
              /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldb

          復制Mysql服務啟動腳本
              # cp /usr/local/mysql/support-files/mysql.server /mysql.server /etc/init.d/mysqld
              # chmod 755 /etc/init.d/mysqld

      修改mysql服務啟動腳本 (多實例才需要)
              # vim /etc/init.d/mysqld
              basedir=/usr/local/mysql
              datadir=/data/mysqldb

      6>配置文件
            以后在企業里面沒有現成my.cnf ,如果編譯安裝后,沒有在/etc/找到my.cnf 那么請到原始的編譯目錄,也就是解壓包的目錄里面找到support-files這個目 錄,將my-default.cnf 拷貝到/etc/my.cnf;

            # cd mysql-5.6.31
            #cp support-files/my-default.cnf /etc/my.cnf

      =========配置文件詳解:
      # vim /etc/my.cnf
      [client]
      port = 3306 //客戶端所連接的端口號
      socket = /tmp/mysql.sock //客戶端所連接的sock文件存放位置

      [mysqld]
      #base
      port = 3306 //mysql的默認端口號,可以修改
      user = mysql //mysql用戶指定
      socket = /tmp/mysql.sock //連接所使用的端口號
      pid-file = /tmp/mysql.pid //進程運行的主PID文件
      basedir = /usr/local/mysql //Mysql安裝目錄
      datadir = /data/mysqldb //Mysql數據目錄
      tmpdir = /opt/mysqltmp //Mysql臨時表目錄
      open_files_limit = 10240 //打開文件句柄的數量
      explicit_defaults_for_timestamp
      sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
      federated //支持sql語法和數據校驗等.sql_mode三種模式
      ANSI模式、寬松模式,對插入數據進行校驗,如果不符合定義類型或長度,對數據類型調整或者截斷保存,報“warning”警告

      TRADITIONAL模式、嚴格模式,當向mysql數據插入數據時、進行數據的嚴格校驗,保證數據不能插入,報error錯誤,用于事物時,會進行事物回滾.

      STRICT_TRANS_TABLES模式。嚴格模式,進行數據的嚴格校驗,錯誤數據不能插入,報error錯誤.

      server_id = 706 //主從復制唯一的服務辨識號,數值位于 1 到
      #replicate-do-db = posp //定義唯一復制的庫
      #replicate-ignore-db = mysql //定義唯一復制的庫
      #log-slave-updates = 1 //這個選項之再主從復制。從服務器上打開復制主的信息
      event_scheduler=1 //打開時間調度器

      max_connections = 2000 //#最大并發連接數 ,增大該值需要相應增加允許打開的文件描述符數
      max_connect_errors = 10000 //如果某個用戶發起的連接error超過該數值,則該用戶的下次連接將被阻塞,
      interactive_timeout = 600 //服務器關閉交互連接前等待活動的秒數
      wait_timeout = 600 //服務器關閉非交互連接之前等待活動的秒數
      skip-name-resolve //#garnt時,必須使用ip,不能使用主機名,禁用DNS解析
      sync_binlog=0 //可以保證事務的安全。缺省為0
      log_bin_trust_function_creators = 1 //打開mysql可自定義函數

      character-set-server = utf8 //設定字符集
      default_storage_engine = InnoDB //定義默認引擎

      #log
      log-bin = /data/mysqldb/binlog/mysql-bin //指定binlog二進制日志的文件名稱
      binlog_cache_size = 32m //binlog的緩存大小
      max_binlog_cache_size = 10g //設定最大的binlog緩存
      binlog_stmt_cache_size = 32m //設定最小的binlo緩存
      table_open_cache = 2048 //表描述符緩存大小,可減少文件打開/關閉次數
      max_binlog_size = 1024m //設置binlog日志文件最大為1G
      binlog_format = mixed //binlog日志格式.
      log_output = FILE //確認輸出到日志文件
      log-error = /data/mysqldb/log/mysql-error.log //mysql系統錯誤日志輸出
      slow_query_log = 1 //打開慢日志記錄
      slow_query_log_file = /data/mysqldb/log/mysql-slow_query.log //定義慢日志輸出的路徑
      general_log = 0 //定義普通日志
      general_log_file = /data/mysqldb/log/mysql-general-query.log //定義普通日志輸出的路徑
      expire-logs-days = 30 //日志保留的時間為30天
      relay-log = /data/mysqldb/binlog/relay-bin //定義reloa_log復制的地址
      relay-log-index= /data/mysqldb/binlog/relay-bin.index //定義reloa_log索引

      #buffer
      sort_buffer_size = 2m //#MyISAM表發生變化時重新排序所需的緩沖。一般64M足矣
      read_buffer_size = 2m //用來做MyISAM表全表掃描的緩沖大小.
      read_rnd_buffer_size = 2m //#當在排序之后,從一個已經排序好的序列中讀取行時,行數據將從這個緩沖中讀取來防止磁盤尋道
      join_buffer_size = 2m //# InnoDB用來緩存數據和

      net_buffer_length = 16k //執行mysqldump時,net buffer length的最大上限是16Mb,默認值是1Mb
      max_allowed_packet = 512m //每個連接獨立的大小.大小動態增加
      bulk_insert_buffer_size = 32m //# 當突發插入被檢測到時此緩沖將被分配用于myisam
      max_heap_table_size = 512m//#內存表的大小
      tmp_table_size = 512m//# 內部(內存中)臨時表的最大大小
      thread_cache_size = 100 //#緩存可重用的線程數,可以適當的調整
      query_cache_size = 256m //#指定MySQL查詢結果緩沖區的大小。調優可以適當調整
      query_cache_limit = 10m //#緩存單條SQL的結果集上限。默認4KB。調優可以適當調整
      query_cache_min_res_unit = 4k
      key_buffer_size = 16m //#關鍵詞緩沖的大小, 一般用來緩沖MyISAM表的索引塊
      myisam_sort_buffer_size = 64m //# 這在每個線程中被分配.所以在設置大值時需要小心
      myisam_max_sort_file_size = 10g //MySQL重建索引時所允許的最大臨時文件的大小如果文件大小比此值更大,索引會通過鍵值緩沖創建(更慢)
      myisam_repair_threads = 1 //#如果一個表擁有超過一個索引, MyISAM

      #innodb
      innodb_file_per_table = 1 #//#可以修改InnoDB為獨立表空間模式,每個數據庫的每個表都會生成一個數據空間
      innodb_data_file_path = ibdata1:2048M:autoextend //#如果你只有單個邏輯驅動保存你的數據,一個單個的自增文件就足夠好了
      innodb_log_file_size = 128m //#在日志組中每個日志文件的大小,
      innodb_log_files_in_group = 3 //# 在日志組中的文件總數. 通常來說2~3是比較好的
      innodb_buffer_pool_size = 1g //innodb緩存池大小
      innodb_buffer_pool_instances = -1
      innodb_max_dirty_pages_pct = 70 //#在InnoDB緩沖池中最大允許的臟頁面的比例. 60-90都可以
      #innodb_thread_concurrency = 8
      innodb_flush_method = O_DIRECT
      innodb_log_buffer_size = 16m # 用來緩沖日志數據的緩沖區的大小. 當此值快滿時, InnoDB將必須刷新數據到磁盤上
      innodb_flush_log_at_trx_commit = 2
      0代表日志只大約每秒寫入日志文件并且日志文件刷新到磁盤# 2代表日志寫入日志文件在每次提交后,但是日志文件只有大約每秒才會刷新到磁盤上

      [mysql]
      no-auto-rehash #可以在命令可以使用tab鍵補齊
      prompt = (\u@\h) [\d]\_ #在Mysql命令顯示主機名字
      default-character-set = utf8 //設定字符集合

      7>啟動服務和設置環境變量:
            #:vim /etc/profile 文件的最后面。
              MYSQL=/usr/local/mysql/bin
              PATH=$PATH:$MYSQL
              export PATH
            #:source /etc/profile //生效

            啟動服務
              # /etc/init.d/mysqld start

        注意:
            log_slave_updates 主從復制的時候。在主(master)服務器上關閉此選項,在從(slave)上面開啟此選項

      ====================常見問題分析:
        啟動數據庫后遇到的錯誤:

      Mysql的編譯安裝以及簡單介紹

      解決方法:
          1》在配置文件中注釋掉 關于 innodb_data_file_path 的一行;
          2》 刪除掉 ibdata1 ibprofile0 ibprofile1

        錯誤二:
          1》需要創建一個缺少的文件夾;
          2》對要創建的文件夾的上一目錄進行權限設置:
            chown mysql:mysql /tmpopt/
          3》可能還需要刪除一些文件,在自己的目錄下找到以下文件并刪除:
            ibdata1 ibprofile0 ibprofile1

      以上就是Mysql的編譯安裝以及簡單介紹的詳細內容,更多請關注php中文網其它相關文章!


      學習教程快速掌握從入門到精通的SQL知識。




      日韩精品一区二区三区高清