linux中mysql自動同步的簡單介紹

本文目錄一覽:

如何在linux下實現mysql數據庫每天自動備份

1. 寫個自動備份的腳本autobackup.sh,內容如下

#!/bin/bash

mysqldump -p databasename mydata.sql

2. 更改其為可執行文件 chmod +x autobackup.sh

3. 通過crontab讓系統自動運行這個腳本就好了,如crontab -e

0 0 * * * /路徑到/autobackup.sh

第一個0表示分鐘,第二個0表示0小時也就是零辰第三個*表示每天,第四個*表示每月,第五個*表示每周

mysql如何實現兩個數據庫數據結構實時同步?

實現兩個Mysql數據庫之間同步同步原理:

MySQL 為了實現replication 必須打開bin-log 項,也是打開二進制的MySQL 日誌記錄選項。MySQL 的bin log 二

進制日誌,可以記錄所有影響到數據庫表中存儲記錄內容的sql 操作,如insert / update / delete 操作,而不記錄

select 這樣的操作。因此,我們可以通過二進制日誌把某一時間段內丟失的數據可以恢復到數據庫中(如果二進制日

志中記錄的日誌項,包涵數據庫表中所有數據,那麼, 就可以恢複本地數據庫的全部數據了)。 而這個二進制日誌,

如果用作遠程數據庫恢復,那就是replication 了。這就是使用replication 而不用sync 的原因。這也是為什麼要設

置bin-log = 這個選項的原因。

在同步過程中,最重要的同步參照物,就是同步使用那一個二進制日誌文件,從那一條記錄開始同步。下面就介紹

下怎樣實現兩個Mysql數據庫之間的主從同步。

一、 概述

  MySQL從3.23.15版本以後提供數據庫複製(replication)功能,利用該功能可以實現兩個數據庫同步、主從模式、

互相備份模式的功能。本文檔主要闡述了如何在linux系統中利用mysql的replication進行雙機熱備的配置。

二、 環境

操作系統:Linux 2.6.23.1-42.fc8 # SMP(不安裝XEN)

Mysql版本:5.0.45-4.fc8

設備環境:PC(或者虛擬機)兩台

三、 配置

數據庫同步複製功能的設置都在MySQL的配置文件中體現,MySQL的配置文件(一般是my.cnf):在本環境下

為/etc/my.cnf。

3.1 設置環境:

IP的設置:

A主機 IP:10.10.0.119

Mask:255.255.0.0

B主機 IP:10.10.8.112

Mask:255.255.0.0

在IP設置完成以後,需要確定兩主機的防火牆確實已經關閉。可以使用命令service iptables status查看防火牆狀態

。如果防火牆狀態為仍在運行。使用service iptables stop來停用防火牆。如果想啟動關閉防火牆,可以使用setup命

令來禁用或定製。

最終以兩台主機可以相互ping通為佳。

3.2 配置A主(master) B從(slave)模式

3.2.1 配置A 為master

  1、增加一個用戶同步使用的帳號:

GRANT FILE ON *.* TO 『backup』@’10.10.8.112′ IDENTIFIED BY 『1234』;

GRANTREPLICATION SLAVE ON *.* TO 『backup』@’10.10.8.112′ IDENTIFIED BY 『1234』;

賦予10.10.8.112也就是Slave機器有File權限,只賦予Slave機器有File權限還不行,還要給它REPLICATION SLAVE的權

限才可以。

2、增加一個數據庫作為同步數據庫:

create databbse test;

3、創建一個表結構:

create table mytest (username varchar(20),password varchar(20));

4、修改配置文件:

修改A的/etc/my.cnf文件,在my.cnf配置項中加入下面配置:

server-id = 1 #Server標識

log-bin

binlog-do-db=test #指定需要日誌的數據庫

5、重起數據庫服務:

service mysqld restart

查看server-id:

show variable like 『server_id』;

實例:

mysql show variables like ‘server_id’;

+—————+——-+

| Variable_name | Value |

+—————+——-+

| server_id | 1 |

+—————+——-+

1 row in set (0.00 sec)

6、用show master status/G命令看日誌情況。

正常為:

mysql show master status/G

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

File: mysqld-bin.000002

positiion: 198

Binlog_Do_DB: test,test

Binlog_Ignore_DB:

1 row in set (0.08 sec)

3.2.2 配置B 為slave

1、增加一個數據庫作為同步數據庫:

create databbse test;

2、創建一個表結構:

create table mytest (username varchar(20),password varchar(20));

3、修改配置文件:

修改B的/etc/my.cnf文件,在my.cnf配置項中加入下面配置:

server-id=2

master-host=10.10. 0.119

master-user=backup #同步用戶帳號

master-password=1234

master-port=3306

master-connect-retry=60 #預設重試間隔60秒

replicate-do-db=test #告訴slave只做backup數據庫的更新

5、重起數據庫服務:

service mysqld restart

查看server-id:

show variables like 『server_id』;

實例:

mysql show variables like ‘server_id’;

+—————+——-+

| Variable_name | Value |

+—————+——-+

| server_id | 2 |

+—————+——-+

1 row in set (0.00 sec)

6、用show slave status/G命令看日誌情況。

正常為:

mysql show slave status/G

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

Slave_IO_State: Waiting for master to send event

Master_Host: 10.10.0.119

Master_User: backup

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysqld-bin.000001

Read_Master_Log_Pos: 98

Relay_Log_File: mysqld-relay-bin.000003

Relay_Log_Pos: 236

Relay_Master_Log_File: mysqld-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: test,test

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: 98

Relay_Log_Space: 236

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

1 row in set (0.01 sec)

3.2.3 驗證配置

分別使用insert, delete , update在A主機進行增刪改查數據庫;查看B主機的數據庫是否與A主機一致;若一致,則配

置成功。

3.3雙機互備模式

如果在A主機加入slave設置,在B主機加入master設置,則可以做B-A的同步。

1、在A主機的配置文件中 mysqld配置項加入以下設置:

master-host=10.10.8.112

master-user=backup

master-password=1234

replicate-do-db=test

master-connect-retry=10

2、在B的配置文件中 mysqld配置項加入以下設置:

log-bin

binlog-do-db=test

注意:當有錯誤產生時,*.err日誌文件同步的線程退出,當糾正錯誤後,要讓同步機制進行工作,運行slave

start。

重起A、B機器,則可以實現雙向的熱備份。

總之,成功完成以上配置後,在主服務器A的test庫里添加數據或刪除數據,在從服務器B的test庫里馬上也能

看到相應的變更。兩台服務器的同步操作可以說是瞬間完成的。

linux下mysql如何實現每天自動備份

首先建立一個備份文件夾:mkdir mysql_data_bak在建立一個腳本文件:touch autobackupmysql.sh打開文件vi autobackupmysql.sh在腳本中加入如下內容:filename=`date +%Y%m%d`/usr/bin/mysqldump -uroot -proot boss /home/mysql_data_bak/$filename.sql檢查有沒安裝crond,如果沒有,先安裝yum -y install vixie-cronyum -y install crontabs啟動服務 :service crond start在CentOS系統中加入開機自動啟動: chkconfig –level 345 crond oncrontab -e加入內容:00 03 * * * source /root/autobackupmysql.sh 每天凌晨3點運行此文件,對數據庫進行備份 service crond restart到此linux下mysql實現沒天自動備份完成。

Linux下指定mysql數據庫數據配置主主同步的實例

一、

概念:

數據庫同步

(主從同步

主數據庫寫的同時

往從服務器寫數據)

數據庫同步

(主主同步

兩台數據庫服務器互相寫數據)

二、

舉例

主主數據庫同步服務器配置

數據庫服務器(A)

主數據庫

IP:192.168.1.134

數據庫服務器(B)

主數據庫

IP:192.168.1.138

兩台服務器同步的用戶名為:

bravedu

密碼:

brave123

一、主數據庫操作設置(A):

創建同步用戶名

允許連接的

用戶IP地址

(非本機IP)

複製代碼

代碼如下:

grant

replication

slave

on

*.*

to

‘bravedu’@’192.168.1.%’

identified

by

‘brave123’;

flush

privileges;

更改mysql配置文件

複製代碼

代碼如下:

[mysqld]

server-id

=

1

log-bin=/www/mysql/binlog/binlog

(路徑要根據自己的安裝設置)

binlog-do-db

=

dbname

(要同步的數據庫名)

binlog-ignore-db=mysql

#相對應主從數據庫同步不同的地方

複製代碼

代碼如下:

log-slave-updates

sync_binlog=1

auto_increment_offset=1

auto_increment_increment=2

replicate-do-db

=

dbname

replicate-ignore-db

=

mysql,information_schema

重啟mysql服務器

查看主數據庫同步狀態

IP:

***.134

複製代碼

代碼如下:

mysqlflush

tables

with

read

lock;

mysqlshow

master

status\G

***************************

1.

row

***************************

File:

mysql-bin.000001

(這裡注意

設置從服務器的時候要用)

Position:

106

(這裡注意設置從服務器的時候要用)

Binlog_Do_DB:

dbname

Binlog_Ignore_DB:

mysql

1

row

in

set

(0.00

sec)

mysqlunlock

tables;

*****主服務器到目前位置設置完畢*******

二、從數據庫操作設置(B):

創建同步用戶名

複製代碼

代碼如下:

grant

replication

slave

on

*.*

to

‘bravedu’@’192.168.1.%’

identified

by

‘brave123’;

flush

privileges;

更改mysql配置文件

複製代碼

代碼如下:

[mysqld]

server-id

=

2

log-bin=/www/mysql/binlog/binlog

(路徑要根據自己的安裝設置)

binlog-do-db

=

dbname

(要同步的數據庫名)

binlog-ignore-db=

mysql,information_schema

#相對於主從同步不同的地方

binlog-do-db

=

dbname

binlog-ignore-db=mysql

log-slave-updates

sync_binlog=1

auto_increment_offset=2

auto_increment_increment=2

重啟mysql服務器

查看主數據庫同步狀態

IP:

***.138

複製代碼

代碼如下:

mysqlflush

tables

with

read

lock;

mysqlshow

master

status\G

***************************

1.

row

***************************

File:

mysql-bin.000005

(這裡注意

設置從服務器的時候要用)

Position:

106

(這裡注意設置從服務器的時候要用)

Binlog_Do_DB:

dbname

Binlog_Ignore_DB:

mysql

1

row

in

set

(0.00

sec)

mysqlunlock

tables;

指定主主數據庫服務器同步指令

註:IP為主服務器的IP,用戶名,密碼,log_file,log_post

服務器互相統一

可能這塊操作

需要先

解除鎖表、停止數據庫狀態、在運行後

在啟動狀態

複製代碼

代碼如下:

mysql

stop

slave;

#設置192.168.1.138數據庫服務器配置

那麼host

配置文件信息

就是

134的信息

mysql

change

master

to

master_host=’192.168.1.134′,

master_user=’bravedu’,

master_password=’brave123′,

master_log_file=’mysql-bin.000005′,

master_log_pos=106;

#設置192.168.1.134

數據庫服務器配置

那麼host

等配置文件信息

就是

134的信息

mysql

change

master

to

master_host=’192.168.1.138′,

master_user=’bravedu’,

master_password=’brave123′,

master_log_file=’mysql-bin.000001′,

master_log_pos=106;

mysql

start

slave;

mysql

unlock

tables;

查看主數據庫同步狀態

會出來很多信息

但是主要看這兩個狀態就行了

如果都是

yes

就可以了

複製代碼

代碼如下:

mysqlshow

slave

status\G;

Slave_IO_Running:

Yes

Slave_SQL_Running:

Yes

至此,主主數據庫同步成功配置完成。

原創文章,作者:PFUF,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/139868.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
PFUF的頭像PFUF
上一篇 2024-10-04 00:23
下一篇 2024-10-04 00:23

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • Python櫻花樹代碼簡單

    本文將對Python櫻花樹代碼進行詳細的闡述和講解,幫助讀者更好地理解該代碼的實現方法。 一、簡介 櫻花樹是一種圖形效果,它的實現方法比較簡單。Python中可以通過turtle這…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • Python大神作品:讓編程變得更加簡單

    Python作為一種高級的解釋性編程語言,一直被廣泛地運用於各個領域,從Web開發、遊戲開發到人工智能,Python都扮演着重要的角色。Python的代碼簡潔明了,易於閱讀和維護,…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL數據庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28

發表回復

登錄後才能評論