admin 管理员组

文章数量: 887021


2024年1月14日发(作者:下载168网站)

MySQL数据库的同步配置

MySQL是开源的关系型数据库系统。主从同步复制(Replication)是从一台MySQL数据库服务器(主服务器master)复制数据到另一个服务器(从服务器slave)的一个进程。

主主、主从是用来分担MYSQL的压力?

#####################配置主服务器(master)#######################################

1、编辑数据库配置文件 或 (windows),一般在/etc/目录下。

#vi /etc/

在[mysqld]的下面加入下面代码:

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/

user=mysql

server-id=1 加入

log-bin=/var/lib/mysql/ 加入

#replicate-do-db=cloud

#auto-increment-increment=2

#auto-increment-offset=1

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

symbolic-links=0

innodb_rollback_on_timeout=1

innodb_lock_wait_timeout=600

max_connections=350

log-bin=mysql-bin

binlog-format='ROW'

[mysqld_safe]

log-error=/var/log/

pid-file=/var/run/mysqld/

名词注释:

server-id=1中的1可以任定义,只要是唯一的就行。

binlog-do-db=wordpress是表示只备份wordpress。

binlog_ignore_db=mysql表示忽略备份mysql。

不加binlog-do-db和binlog_ignore_db,那就表示备份全部数据库。

2、然后重启MySQL: service mysqld restart

3、登录MySQL服务器。

#mysql -uroot –p

在主服务器192.168.3.38新建一个用户赋予“REPLICATION SLAVE”的权限。你不需要再赋予其它的权限。在下面的命令,把X.X.X.X替换为从服务器的IP。

mysql> CREATE USER 'bak'@'192.168.3.90' IDENTIFIED BY 'wangsu520';

mysql>GRANT REPLICATION SLAVE ON *.* TO 'bak'@'192.168.3.90' IDENTIFIED BY

'wangsu520';

测试:在客户机使用bak ,wangsu520去连接主机

mysql –ubak –pwangsu –h 192.168.3.38是否能连接上。并测试是否能查看表的权限有哪几个表。需要是全部的表可以查看。

4、执行以下命令锁定数据库以防止写入数据。

mysql>FLUSH TABLES WITH READ LOCK;

5、退出mysql命令行,导出数据库

#mysqldump -u root –pwangsu520 --all-databases > /root/

6、使用scp命令传输数据库文件到从服务器。

#scp /root/ root@192.168.3.90:/root

7、再次连接数据库进入mysql命令行查看master状态。

mysql>SHOW MASTER STATUS;

请记下显示的信息,配置从服务器会用到。

+——————+———-+————–+——————+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+——————+———-+————–+——————+

| mysql-bin.000001| 253| dbispconfig | mysql |

+——————+———-+————–+——————+

1 row in set (0.00 sec)

注:如果主机没有人写入的话,本步骤检查以及后面在同步的时候,直接再查看主机的SHOW MASTER STATUS; 以最后的一次数据为准也可以。

8、解锁数据表。

mysql>UNLOCK TABLES;

########################备机操作##############################################

IP:192.168.3.90

配置从服务器(slave)

登录从服务器。

1、导入主服务器的数据库。

#mysql -u root –pwangsu520 < /root/

2、编辑配置文件,在[mysqld]下面加入:

server-id=2

注:2可以自己定义,只要保证唯一的就行。

3、保存文件并重启mysqld。

#service mysqld restart

4、登录从mysql服务器,执行以下命令。

mysql> change master to

master_host='192.168.3.38',master_user='bak',master_password='wangsu520',master_log_file='mysql-bin.000040',master_log_pos=3094;

注:

MASTER_HOST:主服务器的IP。

MASTER_USER:配置主服务器时建立的用户名

MASTER_PASSWORD:用户密码

MASTER_PORT:主服务器mysql端口,如果未曾修改,默认即可。

这里master_log_file和master_log_pos就是前面show master status的结果。

###注:如果本步骤无法操作成功,表示要先停止slave slave;

5、启动slave进程。

mysql>START SLAVE;

mysql>SHOW SLAVE STATUS; 如果能查出一条记录 那么,配置成功

6、查看mysql的日志,一般在/var/log/目录下,如果启动成功,你应该会看到类似下面的日志。

091104 8:42:02 [Note] Slave I/O thread: connected to master ‘root@X.X.X.X:3306?,

replication started in log ‘mysql-bin.000001? at position 98

7.验证:

mysql> SHOW SLAVE STATUSG;

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

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.3.38

Master_User: bak

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000087

Read_Master_Log_Pos: 642955

Relay_Log_File: mysqld-relay-bin.000004

Relay_Log_Pos: 643100

Relay_Master_Log_File: mysql-bin.000087

Slave_IO_Running: Yes 表示同步正常

Slave_SQL_Running: Yes表示同步正常

Replicate_Do_DB: cloud

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

Relay_Log_Space: 1063799

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:

1 row in set (0.00 sec)

现在主服务器和从服务器已经配置好了。另外你可能需要设置主服务器的数据库二进制日志的过期时间,可以在配置文件中使用参数expire_logs_days来设定。

灾难处理办法 :

当主机MYSQL宕机后,从机进行更改IP更换主机IP,但要保证两边mysql访问权限一致。

命令:show grants for 'cloud'@'localhost';

从机:

mysql> show grants for 'cloud'@'localhost';

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

| Grants for cloud@localhost |

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

| GRANT USAGE ON *.* TO 'cloud'@'localhost' IDENTIFIED BY PASSWORD '*888557FBD1698D34902AE46256E2735786D95C47' |

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

1 row in set (0.00 sec)

主机:

mysql> show grants for 'cloud'@'localhost';

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

| Grants for cloud@localhost |

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

| GRANT PROCESS ON *.* TO 'cloud'@'localhost' IDENTIFIED BY PASSWORD '*888557FBD1698D34902AE46256E2735786D95C47' |

| GRANT ALL PRIVILEGES ON `cloud`.* TO 'cloud'@'localhost' |

| GRANT ALL PRIVILEGES ON `cloudbridge`.* TO 'cloud'@'localhost' |

| GRANT ALL PRIVILEGES ON `cloud_usage`.* TO 'cloud'@'localhost' |

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

4 rows in set (0.00 sec)

cloudstack平台操作:

先安装平台基本环境 :

-setup-databases cloud:wangsu@192.168.3.90

-setup-management

e cloud-management start

如果这个过程还不能查看到平台界面以及监听的端口。

请1。service cloud-management stop 后,重复上面1.2.3


本文标签: 服务器 数据库 查看 配置 表示