日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql5.7安装错误处理与主从同步及!

發布時間:2025/6/17 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql5.7安装错误处理与主从同步及! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Mysql5.7安裝錯誤處理與主從同步及!

basedir=/iddbs/mysql-5.7.16

datadir=/iddbs/mysql5.7/data3306

?

?

一、自定義Mysql.5.7版本免編譯安裝:?

1、Db-server1安裝前期準備

?

前期準備先確認是否已經安裝了Mysql,如果有rpm安裝會影響面編譯安裝:

具體方法如下:

確保是否有已經rpm安裝了Mysql

[root@bogon?tool]#rpm -qa | grep mysql

mysql-community-libs-5.7.16-1.el6.x86_64

mysql-community-server-5.7.16-1.el6.x86_64

mysql-community-common-5.7.16-1.el6.x86_64

mysql-community-client-5.7.16-1.el6.x86_64

如果有rpm包刪除:

例如:

rpm -e mysql-community-libs-5.7.16-1.el6.x86_64 mysql-community-server-5.7.16-1.el6.x86_64 mysql-community-client-5.7.16-1.el6.x86_64 mysql-community-common-5.7.16-1.el6.x86_64 --nodeps

?

?

2、創建軟件安裝目錄:

??[root@bogon?tool]# mkdir -p /iddbs/

??將面編譯安裝軟件包下載或者拷貝至/iddbs/

??[root@bogon iddbs]# ls

??mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz

??[root@bogon iddbs]# tar -zxf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz

??[root@bogon iddbs]# ls

??mysql-5.7.16-linux-glibc2.5-x86_64 ??mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz ?

??

??將減壓目錄命名為

??[root@bogon?iddbs]# mv mysql-5.7.16-linux-glibc2.5-x86_64?/iddbs/mysql-5.7.16?

??創建用戶:

??[root@bogon?iddbs]# useradd -s /sbin/nologin -M iddbs

??授權給iddbs用戶:

??[root@bogon?iddbs]# chown -R iddbs.iddbs?/iddbs/

?

3、做軟鏈接可以不做如果做了軟鏈接?basedir=/iddbs/mysql以下所有的相關聯的basedir必須是basedir=/iddbs/mysql

?

???[root@bogon?iddbs]# cd /iddbs/

???[root@bogon?iddbs]# ls

?????mysql-5.7.16 ??mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz ?

???[root@bogon?iddbs]# ln -s mysql-5.7.16?/ /iddbs/mysql

?

4、創建數據文件:

???[root@bogon?iddbs# mkdir -p /iddbs/mysql5.7/data3306

?

5、初始化數據庫:

???[root@bogon bin]# pwd

????/iddbs/mysql-5.7.16/bin

???[root@bogon?bin]#

????執行命令mysql_install_db?--basedir=/iddbs/mysql-5.7.16 --datadir=/iddbs/mysql5.7/data3306?--user=iddbs

初始化錯誤

2017-06-10 01:31:22 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize

2017-06-10 01:31:22 [ERROR] ??The data directory '/iddbs/mysql5.7/data3306' already exist and is not empty.????

需使用以下命令:

mysqld --initialize --user=iddbs --basedir=/iddbs/mysql-5.7.16 --datadir=/iddbsdata/mysql5.7/data3306

在執行安裝時必須確保數據目錄下為空及(/iddbsdata/mysql5.7/data3306下不含任何文件)否則報錯

????

6、啟動數據庫常見錯誤及處理方法:

????[root@bogon?mysql]# cp support-files/mysql.server /etc/init.d/mysqld ??#將啟動文件拷貝至/etc/init.d目錄下以可以使用init.d啟動

cp: overwrite `/etc/init.d/mysqld'? y

???????

[root@bogon?mysql]# cp support-files/my-default.cnf /etc/my.cnf ?#將配置文件拷貝到/etc下且名字為my.cnf

[root@bogon?mysql]# cat /etc/my.cnf

# sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]

port=3306

user=iddbs

password ='newpassword'

socket=/iddbs/mysql5.7/data3306/mysql.sock

[mysqld]

max_connections=1000

max_user_connections=500

wait_timeout=200

user=iddbs

server-id=5

port=3306

basedir=/iddbs/mysql5.7

datadir=/iddbs/mysql5.7/data3306

socket=/iddbs/mysql5.7/data3306/mysql.sock

pid-file=/iddbs/mysql5.7/data3306/mysql.pid

log-bin=/iddbs/mysql5.7/data3306/mysql-bin

relay-log=/iddbs/mysql5.7/data3306/relay-bin

log-error=/iddbs/mysql5.7/data3306/mysql-error.log

interactive_timeout=172800

wait_timeout=172800

max_allowed_packet=16M

expire_logs_days=7

auto-increment-increment=2

auto-increment-offset=1

character-set-server=utf8

collation_server=utf8_general_ci

innodb_data_file_path=ibdata1:1G:autoextend

innodb-buffer-pool-size=15G

binlog_format=row

relay_log_recovery=1

log_bin_trust_function_creators=1

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

lower_case_table_names = 1

character_set_server = utf8

event_scheduler = on

[mysqldump]

quick

max_allowed_packet = 16M

?

[mysql]

no-auto-rehash

# Remove the next comment character if you are not familiar with SQL

#safe-updates

default-character-set = utf8

?

[myisamchk]

key_buffer_size = 512M

sort_buffer_size = 512M

read_buffer = 8M

write_buffer = 8M

?

啟動報錯:

[root@bogon?mysql]# /etc/init.d/mysqld start

/etc/init.d/mysqld: line 276: cd: /usr/local/mysql: No such file or directory

Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe)

解決方法修改mysql啟動文件文件目錄路徑:

[root@bogon?mysql]# vim /etc/init.d/mysqld

?

if test -z "$basedir"

then

??basedir=/iddbs/mysql-5.7.16

??bindir=/iddbs/mysql-5.7.16/bin

??if test -z "$datadir"

??then

????datadir=/iddbs/mysql5.7/data3306

??fi

??sbindir=/iddbs/mysql-5.7.16/bin

??libexecdir=/iddbs/mysql-5.7.16/bin

else

??bindir="$basedir/bin"

報錯退出再次啟動:

[root@bogon?mysql]# /etc/init.d/mysqld start

啟動報錯:

Starting MySQL ERROR! Couldn't find MySQL server (/iddbs/mysql5.7/bin/mysqld_safe)

為什么會出現上述情況,由于/etc/init.d/mysqld 啟動時指定了/iddbs/mysql5.7/data3306數據文件,但在/iddbs/mysql5.7/下是不含bin的;真正的bin文件在/iddbs/mysql-5.7.16/bin下,因此可做軟鏈接:

ln -s /iddbs/mysql-5.7.16/bin ?/iddbs/mysql5.7/bin

再次啟動:

[root@bogon?mysql]# /etc/init.d/mysqld start

Starting MySQL.... SUCCESS!

啟動服務/etc/init.d/mysqld 可使用參數

????[root@bogon data3306]# /etc/init.d/mysqld

Usage: mysqld ?{start|stop|restart|reload|force-reload|status}

含啟動、停止、重啟、強制重啟、狀態

7、查看進程:

[root@bogon?mysql]# lsof -i:3306

COMMAND ?PID ?USER ??FD ??TYPE DEVICE SIZE/OFF NODE NAME

mysqld ?4098 mysql ??10u ?IPv4 ?32707 ?????0t0 ?TCP *:mysql (LISTEN)

[root@bogon support-files]# ps -ef | grep mysql| grep -v grep

root ?????1978 ????1 ?0 Jun09 pts/1 ???00:00:00 /bin/sh /iddbs/mysql5.7/bin/mysqld_safe --datadir=/iddbs/mysql5.7/data3306 --pid-file=/iddbs/mysql5.7/data3306/mysql.pid

iddbs ????2445 ?1978 ?0 Jun09 pts/1 ???00:00:27 /usr/local/mysql/bin/mysqld --basedir=/iddbs/mysql5.7 --datadir=/iddbs/mysql5.7/data3306 --plugin-dir=/usr/local/mysql/lib/plugin --user=iddbs --log-error=/iddbs/mysql5.7/data3306/mysql-error.log --pid-file=/iddbs/mysql5.7/data3306/mysql.pid --socket=/iddbs/mysql5.7/data3306/mysql.sock --port=3306

至此mysql5.7安裝完成;

?

二、登錄mysql:

?

???[root@bogon bin]# mysql -uroot -p

???Enter password:

???提示需要輸入密碼;Mysql5.7登錄密碼隱藏在錯誤日志內:

???[root@bogon bin]# cd /iddbs/mysql5.7//data3306/

???[root@bogon data3306]# ls

auto.cnf ???????ib_logfile0 ?mysql ????????????mysql-bin.000003 ?mysql-bin.index ?mysql.pid ???????performance_schema

ib_buffer_pool ?ib_logfile1 ?mysql-bin.000001 ?mysql-bin.000004 ?mysqld_safe.pid ?mysql.sock ??????sys

ibdata1 ????????ibtmp1 ??????mysql-bin.000002 ?mysql-bin.000005 ?mysql-error.log ?mysql.sock.lock

[root@bogon data3306]# grep password mysql-error.log

2017-06-09T13:18:12.551595Z 1 [Note] A temporary password is generated for root@localhost: &DFbeiVDs3ja ??#此為此次安裝密碼自動生成,每次安裝不一樣

[root@bogon data3306]# mysql -uroot -p’&DFbeiVDs3ja ’

登錄以后發現不能進行任何操作:

mysql>

解決方法:

mysql> set ?password=password(‘newpassword’);

mysql> flush privileges;

創建iddbs用戶及登錄:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'iddbs'@'localhost' identified by 'newpassword';

mysql> flush privileges;

mysql> quit

使用iddbs用戶登錄:

[root@bogon data3306]# mysql -uiddbs?-p’newpassword ’

注意可能有報錯:

mysql: [Warning] Using a password on the command line interface can be insecure.

ERROR 1045 (28000): Unknown error 1045

因為5.7基于安全考慮在命令行輸入密碼是不安全的所有禁止登錄;可使用

[root@bogon data3306]# mysql -uiddbs -p

Enter password: password

mysql>

mysql> show databases;

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

| Database ??????????|

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

| information_schema |

| mysql ?????????????|

| performance_schema |

| sys ???????????????|

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

4 rows in set (0.11 sec)

?

?

三、db-server2安裝

???重復db-server1安裝過程

四、Mysql主從同步

?

Mysql部署模式有:一主一從主從同步、一主多從、雙主互為主從、雙主多從、多主多從環狀級聯

此次部署采用雙主互為主從模式:

?

?

  • 主從復制:
  • a)?主從復制原理:

    主從復制是由于masterbinlog記錄了所有操作。利用binlog實現同步

    Mysql主從復制是一個異步的復制過程(但在一般情況下感覺是實施同步的),數據庫數據從一個Mysql數據庫(主庫master)復制到另一個Mysql數據庫(從庫slave)。在masterslave之間實現整個主從復制的過程是由三個線程參與完成的。其中兩個線程(SQL線程和IO線程)在slave端,另外一個線程(IO線程)在master端。

    要是先Mysql的主從復制,首先必須打開master端的binlogmysql-bin.XXXXXX)功能。否則無法實現主從復制。因為整個復制過程實際上就是slavemaster端獲取binlog日志,然后在slave自身上以相同的順序執行獲取的binlog日志中所記錄的各種操作。

    ?

    b)?主從復制的應用:
    主從服務器互為備份,主從設置可以加強數據架構的健壯性,當主出問題時,可以人工或者自動切換到從服務器上繼續提供服務。
    主從服務器可實現讀寫分離分擔網站壓力。

    c)?主從復制具體操作:

    ?

  • 主庫(master)配置文件my.cnf開啟log-bin
  • server-id ??????= 1

    # Uncomment the following if you want to log updates

    log-bin=/application/mysql/mysql-bin

    可以在數據庫中查看:

    mysql> show variables like 'log%'; ?#查看主庫的binlog開關是否生效(ON狀態)

    ?

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

    | Variable_name ????| Value ??????????????????????????????????????|

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

    | log ??????????????| OFF ???????????????????????????????????????|

    | log_bin ??????????| ON ????????????????????????????????????????|

  • 建立主從數據賬號?
  • ????
    mysql> grant replication slave?on *.* to 'rep'@'172.22.2.%' identified by 'xuxuedong'; ????replication slave為同步權限。

    ????Query OK, 0 rows affected (0.00 sec)
    主庫授權賬號解決從庫連接主庫的問題。

  • 鎖表數據保證同步數據一致性,
    mysql> flush tables with read lock;
  • Query OK, 0 rows affected (0.00 sec)

    查看binlog節點位置。

    mysql> show master status;

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

    | File ????????????| Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

    | mysql-bin.000001 | ?????259 |??????????????| ?????????????????|

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

    ????????1 row in set (0.00 sec)

  • 從庫獲取主庫節點信息:
  • 如果是主從單復制,從庫可以不開啟binlog

    有兩種情況從庫必須打開binlog:

    ?1)級聯同步:A->B->C那么B必須開啟binlog

    ?????????????2)從庫做數據備份,數據庫備份必須要有全備和binlog日志

    [root@CentOS ~]# mysqldump -uroot -pxuxuedong -B -A --events -S /data/3306/mysql.sock ?> /opt/new.mysql

    [root@CentOS ~]# ls /opt/

    new.mysql ?rh

  • 解鎖主庫:
  • mysql> unlock tables ;

    Query OK, 0 rows affected (0.00 sec)

    ?

  • 數據導入從庫
  • ?

    [root@CentOS ~]# mysql -uroot -pxuxuedong ??-S /data/3306/mysql.sock ?< /opt/new.mysql

    [root@CentOS 3306]# cat | mysql -uroot -pxuxuedong -S /data/3306/mysql.sock <<EOF

    CHANGE MASTER TO

    MASTER_HOST='172.22.2.237',

    MASTER_PORT=3306,

    ?MASTER_USER='rep',

    ?MASTER_PASSWORD='xuxuedong',

    MASTER_LOG_FILE='mysql-bin.000001',

    MASTER_LOG_POS=259;

    ?EOF

    [root@CentOS 3306]# ls /data/3306/data/master.info

    /data/3306/data/master.info

    上述操作實際是將用戶密碼等信息寫入從庫的master.info中。

    ?

    ?

  • 從庫開始同步:
  • ?

    mysql> slave start;

    Query OK, 0 rows affected (0.00 sec)

    mysql> show slave status\G ?#查看同步。

    *************************** 1. row ***************************

    ???????????????Slave_IO_State: Waiting for master to send event

    ??????????????????Master_Host: 172.22.2.223

    ??????????????????Master_User: rep

    ??????????????????Master_Port: 3306

    ????????????????Connect_Retry: 60

    ??????????????Master_Log_File: mysql-bin.000001

    ??????????Read_Master_Log_Pos: 370

    ???????????????Relay_Log_File: mysql-relay-bin.000002

    ????????????????Relay_Log_Pos: 363

    ????????Relay_Master_Log_File: mysql-bin.000001

    ?????????????Slave_IO_Running: Yes

    ????????????Slave_SQL_Running: Yes

    ??????????????Replicate_Do_DB:

    ??????????Replicate_Ignore_DB:

    ???????????Replicate_Do_Table:

    ???????Replicate_Ignore_Table:

    ??????Replicate_Wild_Do_Table:

    ??Replicate_Wild_Ignore_Table:

    ???????????????????Last_Errno: 0

    ???????????????????Last_Error:

    ?????????????????Skip_Counter: 0

    ??????????Exec_Master_Log_Pos: 370

    ??????????????Relay_Log_Space: 519

    ??????????????Until_Condition: None

    ???????????????Until_Log_File:

    ????????????????Until_Log_Pos: 0

    ???????????Master_SSL_Allowed: No

    ???????????Master_SSL_CA_File:

    ???????????Master_SSL_CA_Path:

    ??????????????Master_SSL_Cert:

    ????????????Master_SSL_Cipher:

    ???????????????Master_SSL_Key:

    ????????Seconds_Behind_Master: 0

    Master_SSL_Verify_Server_Cert: No

    ????????????????Last_IO_Errno: 0

    ????????????????Last_IO_Error:

    ???????????????Last_SQL_Errno: 0

    ???????????????Last_SQL_Error:

    ??Replicate_Ignore_Server_Ids:

    ?????????????Master_Server_Id: 1

    1 row in set (0.00 sec)

    ?

    ???????完成以上主從同步已經實現。

  • 總結主從復制的步驟:
  • 1、需要兩臺數據庫。

    2、配置my.cnf文件,主庫配置log-binserver-id參數,從庫配置server-id且不能和主庫以及其他從庫一樣;從庫一般不開啟log-bin功能。配置后重啟服務生效。

    3、登錄主庫增加用于連接主庫同步的賬號:如rep并授權replication slave同步權限。

    4、登錄主庫,證庫鎖表flush tables with read lock;”(窗口不能關閉,窗口關閉及失效。)然后show ?master status查看binlog的位置狀態。

    5、新開窗口,備份或導出原有的數據庫,并拷貝到從庫所在的服務器目錄。如果數據量很大,并且允許停機,可停機打包,而不用mysqldump.

    6、J解鎖主庫:unlock tables

    7、把主庫導出的原有的數據恢復到從庫。

    8、根據主庫的show master status 查看binlog的位置狀態,在從庫執行change master語句。

    9、從庫開啟同步開關,start slave

    10、從庫show slave status \G;查看同步狀態,并在主庫進行更行測試。

    ?

    ?

    d)?忽略權限庫同步:
    1、主庫下忽略mysql庫及information-schema庫的主從同步。及上文提及的不想同步的數據庫在主庫添加:

    binlog-ignore-db=mysql

    binlog-ignore-db=information-schema

    2、從庫下可以忽略mysql同步:及replicate-ignore-db=mysql 從庫主庫必須同時使用

    ?

    ?

    posted on 2017-06-12 09:43?Steward_Xu 閱讀(...) 評論(...) 編輯 收藏

    轉載于:https://www.cnblogs.com/Steward-Xu/p/6991385.html

    總結

    以上是生活随笔為你收集整理的Mysql5.7安装错误处理与主从同步及!的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。