mysql主从.主主配置详细

mysql主从.主主配置详细
mysql主从.主主配置详细

查询mysql内所有用户情况mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM https://www.360docs.net/doc/0f10086559.html,er;

如果没有在/etc/https://www.360docs.net/doc/0f10086559.html,f中配置bin-log位置,MySQL的bin-log默认文件位置在/var/lib/mysql 下

配置时还请注意:

1. 主服务器、从服务器的IP地址可能变化,不要在https://www.360docs.net/doc/0f10086559.html,f配置固定的master-ip,用

命令指定。

2. 主服务器和从服务器都启动ssh服务,方便从服务器远程登录主服务器。

3. 在从服务器上测试主服务器的状态。

4. mysql配置改变主要要重启服务sudo restart mysql或service mysql restart,我就

因为没有及时重启浪费了时间。

5. 配置发生改变后最好重新开启一个命令行终端输入命令。

6. 从数据库的改变也能同步到主数据库

过程 1.1. Master 设置步骤

1. 配置https://www.360docs.net/doc/0f10086559.html,f 文件

确保主服务器主机上https://www.360docs.net/doc/0f10086559.html,f文件的[mysqld]部分包括一个log-bin选项。该部分还应有一个server-id=Master_id选项

# vim /etc/mysql/https://www.360docs.net/doc/0f10086559.html,f

server-id = 1

log_bin = /var/log/mysql/mysql-bin.log

expire_logs_days = 10

max_binlog_size = 100M

binlog_do_db = test

binlog_ignore_db = mysql

bind-address默认是127.0.0.1你必须更改它,否则Slave将无法链接到Master

#bind-address = 127.0.0.1

bind-address = 0.0.0.0

重启服务器

neo@netkiller:~$ sudo /etc/init.d/mysql reload

* Reloading MySQL database server mysqld [ OK ]

建议使用reload,如果不起作用再用restart

2. 登录slave服务器,测试主库3306工作情况,如果看到下面相关信息表示工作正常。

3.

4.# telnet 192.168.1.246 3306

5.Trying 192.168.1.24

6...

6.Connected to 192.168.1.246.

7.Escape character is '^]'.

8.I

9. 5.1.61-0ubuntu0.11.10.1-log1W

10.

11. 创建账户并授予REPLICATION SLAVE权限

12.

13.mysql> GRANT REPLICATION SLAVE ON *.* TO

'replication'@'%https://www.360docs.net/doc/0f10086559.html,' IDENTIFIED BY 'slavepass';

14.mysql> FLUSH PRIVILEGES;

15.

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO

replication@'192.168.245.131' IDENTIFIED BY 'slavepass'

16. 锁表禁止写入新数据

17.

18.mysql> FLUSH TABLES WITH READ LOCK;

19.

20. 查看Master 工作状态

21.

22.mysql> SHOW MASTER STATUS;

23.+------------------+----------+--------------+-----------------

-+

24.| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

25.+------------------+----------+--------------+-----------------

-+

26.| mysql-bin.000002 | 106 | test | mysql |

27.+------------------+----------+--------------+-----------------

-+

28.1 row in set (0.00 sec)

29.

如果显示下面内容表示,配置不正确

mysql> SHOW MASTER STATUS;

Empty set (0.02 sec)

取得快照并记录日志名和偏移量后,可以在主服务器上重新启用写活动

mysql> UNLOCK TABLES;

5.1.2. Slave

过程 1.2. Slave 设置步骤

1. 配置https://www.360docs.net/doc/0f10086559.html,f

从服务器的ID必须与主服务器的ID不相同,如果设置多个从服务器,每个从服务器必须有一个唯一的server-id值,必须与主服务器的以及其它从服务器的不相同。

# vim /etc/mysql/https://www.360docs.net/doc/0f10086559.html,f

[mysqld]

server-id = 2

2.# service mysql restart

3.mysql start/running, process 22893

4.

5. 指定master 相关参数

在从服务器上执行下面的语句,用你的系统的实际值替换选项值

mysql> CHANGE MASTER TO

-> MASTER_HOST='master_host_name',

-> MASTER_USER='replication_user_name',

-> MASTER_PASSWORD='replication_password',

-> MASTER_LOG_FILE='recorded_log_file_name',

-> MASTER_LOG_POS=recorded_log_position;

CHANGE MASTER TO MASTER_HOST='192.168.245.129',

MASTER_USER='replication', MASTER_PASSWORD='slavepass';

mysql> CHANGE MASTER TO MASTER_HOST='192.168.245.129',

MASTER_USER='repl', MASTER_PASSWORD='slavepass';

Query OK, 0 rows affected (0.14 sec)

6. 启动从服务器线程

7.

8.mysql> START SLAVE;

9.Query OK, 0 rows affected (0.00 sec)

10.

11. SLAVE STATUS

12.

13.mysql> SHOW SLAVE STATUS\G

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

15. Slave_IO_State: Connecting to master

16. Master_Host: 192.168.245.129

17. Master_User: repl

18. Master_Port: 3306

19. Connect_Retry: 60

20. Master_Log_File:

21. Read_Master_Log_Pos: 4

22. Relay_Log_File: mysqld-relay-bin.000002

23. Relay_Log_Pos: 98

24. Relay_Master_Log_File:

25. Slave_IO_Running: Yes

26. Slave_SQL_Running: Yes

27. Replicate_Do_DB:

28. Replicate_Ignore_DB:

29. Replicate_Do_Table:

30. Replicate_Ignore_Table:

31. Replicate_Wild_Do_Table:

32.Replicate_Wild_Ignore_Table:

33. Last_Errno: 0

34. Last_Error:

35. Skip_Counter: 0

36. Exec_Master_Log_Pos: 0

37. Relay_Log_Space: 98

38. Until_Condition: None

39. Until_Log_File:

40. Until_Log_Pos: 0

41. Master_SSL_Allowed: No

42. Master_SSL_CA_File:

43. Master_SSL_CA_Path:

44. Master_SSL_Cert:

45. Master_SSL_Cipher:

46. Master_SSL_Key:

47. Seconds_Behind_Master: NULL

48.1 row in set (0.00 sec)

49.

5.1.3. Testing

1. 登录master

复制进程的信息

SHOW PROCESSLIST语句可以提供在主服务器上和从服务器上发生的关于复制

的信息

mysql> SHOW PROCESSLIST\G

*************************** 1. row *************************** Id: 62

User: replication

Host: ken-hx409.local:36465

db: NULL

Command: Binlog Dump

Time: 679

State: Has sent all binlog to slave; waiting for binlog to be updated

Info: NULL

*************************** 2. row *************************** Id: 64

User: root

Host: localhost

db: NULL

Command: Query

Time: 0

State: NULL

Info: SHOW PROCESSLIST

2 rows in set (0.00 sec)

2. 登录从库,查看复制线程

3.

4.mysql> SHOW PROCESSLIST\G

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

6. Id: 273

7. User: root

8. Host: localhost

9. db: NULL

https://www.360docs.net/doc/0f10086559.html,mand: Query

11. Time: 0

12. State: NULL

13. Info: SHOW PROCESSLIST

14.*************************** 2. row ***************************

15. Id: 276

16. User: system user

17. Host:

18. db: NULL

https://www.360docs.net/doc/0f10086559.html,mand: Connect

20. Time: 2

21. State: Waiting for master to send event

22. Info: NULL

23.*************************** 3. row ***************************

24. Id: 277

25. User: system user

26. Host:

27. db: NULL

https://www.360docs.net/doc/0f10086559.html,mand: Connect

29. Time: 2

30. State: Has read all relay log; waiting for the slave I/O thread

to update it

31. Info: NULL

32.3 rows in set (0.00 sec)

33.

如果没有复制进程,请使用start slave;启动

mysql> SHOW PROCESSLIST\G

*************************** 1. row *************************** Id: 273

User: root

Host: localhost

db: NULL

Command: Query

Time: 0

State: NULL

Info: SHOW PROCESSLIST

1 row in set (0.0

2 sec)

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

34. 登录master

35.

36.mysql> insert into foo(id,data) values(2,'Hello world!!!');

37.Query OK, 1 row affected (0.00 sec)

38.

39. 登录slave

40.

41.mysql> select * from foo;

42.

在master服务器上插入一条记录,你可以立刻在slave服务器上看到变化。

5.1.4. 将现有数据库迁移到主从结构数据库

数据库已经存在的情况下怎么迁移

1. Master 锁表禁止写入新数据

2.

3.mysql> FLUSH TABLES WITH READ LOCK;

4.

5. Slave 停止复制进程

6.

7.mysql> stop slave;

8.

9. 备份Master数据库

10.

11.mysqldump yourdb | gzip > yourdb.sql.gz

12.

13. 恢复数据库

如果使用mysqldump备份主服务器的数据,将转储文件装载到从服务器

# zcat yourdb.sql.gz | mysql -u root -p yourdb

14. 启动Slave 复制进程

15.

16.mysql> start slave;

17.

18. 解除Master 表锁定

19.

20.mysql> UNLOCK TABLES;

21.

MyIASM引擎可以采用下面方法

备份数据库

# tar zcvf mysql-snapshot.tar.gz /var/lib/mysql/neo 复制给从数据库

scp mysql-snapshot.tar.gz neo@192.168.245.131:/tmp

snapshot 恢复

$ tar zxvf mysql-snapshot.tar.gz

$ cd /var/lib/mysql

$ mv /tmp/var/lib/mysql/neo .

$ sudo chown mysql.mysql -R neo

重新启动Mysql

$ sudo /etc/init.d/mysql restart

有兴趣可以看看mysqlhotcopy

5.1.5. 主从复制安全问题

复制帐号权限

grant replication slave on *.* to 'replication'@'192.168.1.%' identified by '000000';

主库数据库操作帐号权限

grant DELETE, INSERT, SELECT, UPDATE ON your_user.* to yourdb@'your_host' identified by 'password' with grant option;

从库数据库操作帐号权限

grant SELECT ON your_user.* to yourdb@'your_host' identified by

'password' with grant option;

从库必须收回写操作

5.1.

6. 主从不同步问题

执行下面语句

stop slave;

set global sql_slave_skip_counter =1 ;

start slave;

Seconds_Behind_Master 值从NULL变为大于等于0是表示已经同步

Seconds_Behind_Master: NULL

Seconds_Behind_Master: 8893

5.2. Master Master(主主)

5.2.1. Master A

https://www.360docs.net/doc/0f10086559.html,f 文件加入下面的内容

cp /etc/mysql/https://www.360docs.net/doc/0f10086559.html,f /etc/mysql/https://www.360docs.net/doc/0f10086559.html,f.old

vim /etc/mysql/https://www.360docs.net/doc/0f10086559.html,f

[mysqld]

server-id = 1

log-bin=/data/mysql/binlog/binlog

binlog-do-db = test

binlog-ignore-db=mysql

log-slave-updates

sync_binlog=1

auto_increment_offset=1

auto_increment_increment=2

replicate-do-db = test

replicate-ignore-db = mysql,information_schema

创建复制权限

grant replication slave on *.* to 'replication'@'192.168.1.%' identified by '000000';

flush privileges;

mysql>flush tables with read lock;

mysql> show master status\G

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

File: binlog.000007

Position: 107

Binlog_Do_DB: test

Binlog_Ignore_DB: mysql

1 row in set (0.00 sec)

5.2.2. Master B

创建复制权限

grant replication slave on *.* to 'replication'@'192.168.1.%' identified by '000000';

flush privileges;

https://www.360docs.net/doc/0f10086559.html,f 文件加入下面的内容

[mysqld]

server-id = 2

log-bin = /data/mysql/binlog/binlog

replicate-do-db = test

replicate-ignore-db = mysql,information_schema

binlog-do-db = test

binlog-ignore-db=mysql

log-slave-updates

sync_binlog=1

auto_increment_offset=2

auto_increment_increment=2

B 与A 配置文件不同的两处。

server-id = 2

auto_increment_offset=2

mysql> show master status\G

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

File: binlog.000005

Position: 107

Binlog_Do_DB: test

Binlog_Ignore_DB: mysql

1 row in set (0.00 sec)

5.2.3. 将Master A 数据库同步到Master B 两端数据库内容保持一致

Master A,首先锁表为只读状态

mysqldump --databases test > /tmp/test.sql

Master B 创建一个与Master A同名的空数据库,然后将备份文件恢复到数据库中

# mysql

mysql> CREATE DATABASE test;

mysql>\q

# scp 192.168.1.1:/tmp/test.sql ./

# mysql -uroot -p test < /tmp/test.sql

5.2.4. Master A - B 同步两端数据库

master-A

mysql>change master to master_host='192.168.1.2',

master_user='replication', master_password='000000',

master_log_file='binlog.000005', master_log_pos=107;

master-B

mysql>change master to master_host='192.168.1.1', master_user='replication', master_password='000000', master_log_file='binlog.000007', master_log_pos=107;

5.2.5. Master A 数据库解除只读权限

Master A 解锁

mysql> UNLOCK TABLES;

5.2.

6. 查看主主的工作状态

分别在Master A与B 上运行

mysql>show slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

5.3. 与复制有关的问题

5.3.1. expire-logs-days

缺省expire-logs-days为30天。这里设为7天,可根据自己情况调整。[mysqld]

expire-logs-days = 7

5.3.2. Semisynchronous Replication

mysql> SHOW VARIABLES LIKE "have_dynamic_loading";

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

| Variable_name | Value |

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

| have_dynamic_loading | YES |

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

1 row in set (0.00 sec)

mysql>

master > INSTALL PLUGIN rpl_semi_sync_master SONAME

‘libsemisync_master.so’;

slave-x > INSTALL PLUGIN rpl_semi_sync_slave SONAME

‘libsemisync_slave.so’;

master > SET GLOBAL rpl_semi_sync_master_enabled=1;

slave-x > SET GLOBAL rpl_semi_sync_slave_enabled=1;

CREATE USER 'replication'@'192.168.1.%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'replication'@'192.168.1.%' IDENTIFIED BY 'password' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0

MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

master_heartbeat_period

STOP SLAVE;

CHANGE MASTER TO master_heartbeat_period= milliseconds;

START SLAVE;

mysql> CHANGE MASTER TO MASTER_HOST='xxx.xxx.xxx.xxx',

MASTER_USER='root', MASTER_PASSWORD='password', MASTER_PORT=3306, MASTER_CONNECT_RETRY=10, MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=107;

跳过出问题的MySQL实例

CHANGE MASTER TO MASTER_HOST=xxx.xxx.xxx.xxx IGNORE_SERVER_IDS=y

编辑https://www.360docs.net/doc/0f10086559.html,f加入

# On Master

[mysqld]

rpl_semi_sync_master_enabled=1

rpl_semi_sync_master_timeout=1000 # 1 second

# On Slave

[mysqld]

rpl_semi_sync_slave_enabled=1

MySQL主从复制、搭建、状态检查、中断排查及备库重做 实战手册

美河学习在线https://www.360docs.net/doc/0f10086559.html, MySQL主从复制 MySQL主从复制、搭建、状态检查、中断排查及备库重做 本文档主要对MySQL主从复制进行简单的介绍,包括原理简介、搭建步骤、状态检查、同步中断及排查、备库重建。

目录 一、MySQL主从复制概述 (2) 1、主从复制简介 (2) 2、主从复制原理、机制 (2) 3、主从复制原理图 (3) 二、MySQL主从复制搭建 (4) 1、Master端配置部署 (4) 2、Slave端配置部署 (4) 3、建立主从同步 (4) 三、主从复制状态检查及异常处理 (6) 1、主从复制状态检查 (6) 2、IO_thread异常 (7) 3、sql_thread异常 (8) 4、主从复制延迟 (9)

一、MySQL主从复制概述 1、主从复制简介 MySQL主从复制就是将一个MySQL实例(Master)中的数据实时复制到另一个MySQL实例(slave)中,而且这个复制是一个异步复制的过程。 实现整个复制操作主要由三个进程完成的,其中两个进程在Slave(sql_thread和IO_thread),另外一个进程在 Master(IO进程)上。 2、主从复制原理、机制 要实施复制,首先必须打开Master端的binary log(bin-log)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。 复制的基本过程如下: 1)、Slave上面的IO_thread连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容; 2)、Master接收到来自Slave的IO_thread的请求后,通过负责复制的IO进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave 的IO_thread。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log file的以及bin-log pos; 3)、Slave的IO_thread接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的 bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”; 4)、Slave的Sql_thread检测到relay-log中新增加了内容后,会马上解析relay-log 的内容成为在Master端真实执行时候的那些可执行的内容,并在本数据库中执行。

MySQL5.6.14下载、安装及配置安装图文教程

说明 5.6.14是一个稳定的发布版本,比较稳定的,安装包比5.5大很多,因为集成了32位和64位的,网上有人做过测试,性能比5,5强很多,于是果断选5.6,下面开始安装. 下载及安装MySQL 自MySQL版本升级到5.6以后,其安装及配置过程和原来版本发生了很大的变化,下面详细介绍5.6版本MySQL的下载、安装及配置过程。 s 图1.1 MySQL5.6 目前针对不同用户,MySQL提供了2个不同的版本: MySQL Community Server:社区版,该版本完全免费,但是官方不提供技术支持。 MySQL Enterprise Server:企业版,它能够高性价比的为企业提供数据仓库应用,支持ACID事物处理,提供完整的提交、回滚、崩溃恢复和行级锁定功能。但是该版本需付费使用,官方提供电话及文档等技术支持。 目前最新的MySQL版本为MySQL 5.6,可以在官方网站(https://www.360docs.net/doc/0f10086559.html,/downloads/)上面下载该软件。在下图1.2所示的MySQL官网上单击右下角的“MySQL Installer 5.6”超链接,然后按照提示一步步操作就可以将MySQL软件下载到本地计算机中了。注意这里我们选择的是数据库版本是“Windows (x86, 32-bit), MSI Installer”,如下图1.3所示。 图1.2 MySQL官方网站 图1.3 选择MySQL版本 MySQL下载完成后,找到下载到本地的文件,按照下面所示的步骤双击进行安装: 步骤1:双击MySQL安装程序(mysql-installer-community-5.6.10.1),会弹出如下图1.4所示的欢迎窗口。

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的配置文件(一般是https://www.360docs.net/doc/0f10086559.html,f):在本环境下为/etc/https://www.360docs.net/doc/0f10086559.html,f 。 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’; GRANT REPLICATION SLAVE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’; 赋予10.10.8.112也就是Slave 机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。 2、增加一个数据库作为同步数据库: create database test; 3、创建一个表结构: create table mytest (username varchar(20),password varchar(20)); 4、修改配置文件: 修改A的/etc/https://www.360docs.net/doc/0f10086559.html,f 文件,在https://www.360docs.net/doc/0f10086559.html,f 配置项中加入下面配置:server-id = 1 #Server 标识 log-bin

MySQL主从、主主复制及高可用性要点

一:MySQL复制: MySQL复制简介: 将master服务器中主数据库的ddl和dml操作通过二进制日志传到slaves服务器上,然后在master服务器上将这些日志文件重新执行,从而使得slave服务器和master服务器上的数据信息保持同步。 Mysql复制的原理: 将数据分布到多个系统上去,是通过将Mysql的某一台master主机的数据复制到其它(slave)主机上,并重新执行一遍来实现的; 复制过程中一个服务器充当master服务器,而一台或多台其它服务器充当slave服务器。master服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。 这些日志可以记录发送到slave服务器的更新。当一个slaves服务器连接master服务器时,它通知master服务器从服务器在日志中读取的最后一次成功更新的位置。slave服务器接收从那时起发生的任何更新,然后封锁并等待master服务器通知新的更新。 mysql复制的优点: 在slave服务器上执行查询操作,降低master服务器的访问压力 当master服务器上出现了问题可以切换到slave服务器上,不会造成访问中断等问题 在slave服务器上进行备份,以避免备份期间影响master服务器的服务使用及日常访问

Mysql自身的复制功能:是构建大型、高性能应用程序的基础。 mysql支持的复制类型: 基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。一旦发现没法精确复制时,会自动选着基于行的复制。 基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 从mysql5.0开始支持 混合类型的复制::默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。 MySQL复制技术的特点: 数据分布(Data distribution ) 备份(Backups) 负载平衡(load balancing) 高可用性和容错性High availability and failover 复制的工作过程: master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events); slave将master的binary log events拷贝到它的中继日志(relay log); slave重做中继日志中的事件,将改变反映它自己的数据。

虚拟机CentOS下MySQL的安装与配置

CentOS下MySQL的安装与配置 一、mysql是关系型数据库,可以去官网下载rpm包安装,但是也可以直接用yum 二、卸载原有的mysql 输入命令:# rpm –qa | grep mysql //查看是否安装了mysql。 使用# rpm –e mysql //普通删除模式。 # rpm –e –nodeps mysql //强力删除模式,若上个命令删除时有提示依赖项,次命 令可以强力删除。 三、通过yum安装mysql # yum list | grep mysql //查看yum提供的mysql可以下载的版本 然后# yum install –y mysql-server mysql mysql-deve // 安装mysql、mysql-server、mysql-deve即客户端和服务器

安装完毕! 四、mysql的初始化 安装完mysql后,就会多处一个mysqld的服务,此就是数据库服务,可以输入# service mysqld start 命令启动mysqld服务。第一次启动会有很多提示信息,那是在进行初始化配置,下一次启动就不会有了,就像: 我们在使用mysql数据库的时候,都要先启动mysqld,我们可以将mysqld服务设置成开机启动,免得每次我们都要去启动一下。通过# chkconfig mysqld on 设置 Mysql安装完后只有一个root管理员账户,没有密码,我们可以为root帐号设置密码(这个为mysql的root账户,不是linux的root账户)# mysqladmin –u root password ‘new pw’然后通过mysql –u root –p 命令登陆我们的mysql 五、mysql的主要配置文件 1、/etc/https://www.360docs.net/doc/0f10086559.html,f这是mysql的主配置文件 我们可以查看一下一些信息

安装和配置MySQL服务器

安装和配置MySQL数据库服务器模块 Lab1:源码安装MySQL服务器 实验要求: 1)通过源码安装MySQL服务器,要求安装到/usr/local/mysql目录,配置文件目录为/etc。 2)设置开机时自动运行MySQL服务器。 3)关闭rpm软件安装MySQL服务器(如果存在)。 实验时间:60分钟 实验步骤: 1、进入/root/lamp_software目录,找到mysql-6.0.4-alpha.tar.gz,并解压源码文件。如下所示。 [root@localhost lamp_software]#tar-zxf mysql-6.0.4-alpha.tar.gz-C/usr/local [root@localhost lamp_software]#cd/usr/local/ [root@localhost local]#ls bin games lib mysql-6.0.4-alpha sbin src etc include libexec RealPlayer share 2、配置mysql源码安装文件,设置MySQL安装到/usr/local/mysql目录,配置文件目录为/etc/目录。 [root@localhost local]#cd mysql-6.0.4-alpha [root@localhost mysql-6.0.4-alpha]#./configure--prefix=/usr/local/mysql--sysconfdir=/etc/ 3、编译mysql源码 [root@localhost mysql-6.0.4-alpha]#make 显示以下信息,表示编译成功。 /bin/chmod+x bench-count-distinct-t /bin/mv bench-count-distinct-t bench-count-distinct make[1]:Leaving directory`/usr/local/mysql-6.0.4-alpha/sql-bench' Making all in win make[1]:Entering directory`/usr/local/mysql-6.0.4-alpha/win' make[1]:Nothing to be done for`all'. make[1]:Leaving directory`/usr/local/mysql-6.0.4-alpha/win' 4、安装mysql服务器 [root@localhost mysql-6.0.4-alpha]#make install 显示以下信息,表示编译成功。 make[2]:Leaving directory`/usr/local/mysql-6.0.4-alpha/sql-bench' make[1]:Leaving directory`/usr/local/mysql-6.0.4-alpha/sql-bench' Making install in win make[1]:Entering directory`/usr/local/mysql-6.0.4-alpha/win' make[2]:Entering directory`/usr/local/mysql-6.0.4-alpha/win'

网站MySQL数据库优化方案-主从架构及读写分离

网站MySQL数据库优化方案 网络运维信息管理中心 (2020年8月)

数据库为网站提供数据的结构化存储,是网站系统的重要组成部分,但随着业务逻辑的复杂度的增加,数据库需要不断的优化,单一的数据库已无法满足现在要求。 1.1优化目标 针对网站的MySQL数据库部署架构进行优化,其优化的目的是为了防止数据库出现单点故障问题,提高数据库的处理能力,提高数据库的可靠性,为保证网站业务正常办理。 1.2优化工作思路 1、对现有数据库现状分析包括现有数据库配置合理性分析、现有数据库部署情况两部分工作内容; 2、梳理现有网站的功能模块,目的是通过梳理网站的各功能模块对数据读取时效性,分析其是否可以实现读写; 3、以数据库主从架构及数据库读写分离方式,对网站的MySQL 数据库提出数据库部署架构优化的方案,数据库主从架构的多数据库模式,解决数据库单点存在的问题,当主数据库出现宕机时,可以将从数据库代替主数据库恢复业务系统正常运行,而且避免数据的丢失,提高数据库高可靠性和高可用性;通过部分查询统计功能,实现数据库读写分离,以便对数据库负载进行分流,缓解主数据库的读取压力。

2.1当前数据库部署架构图 当前网站的数据库采用单台MySQL数据库提供数据库服务,当前部署架构图如下: 2.2现有数据库主要配置梳理

2.3数据库部署情况梳理 2.3.1数据库安装部署情况梳理 2.3.2现有应用连接数据库情况梳理 连接数据库的应用系统有会员管理、权限管理、订单模块、商品管理、促销管理、广告管理、报表统计、文章管理、评论管理、系统设置、数据库管理、短信管理、推荐管理、邮件群发管理等。2.3.3数据库服务启动、停止方式梳理 1、启动命令 (1)普通启动:/data/soa/mysql/bin/mysqld (2)centos6以前版本:service start mysqld (3)centos7+:systemctl mysqld start

MySQL5.6版本安装及配置过程

编辑者:Vocabulary 下面详细介绍5.6版本MySQL的下载、安装及配置过程。 图1.1 MySQL5.6 目前针对不同用户,MySQL提供了2个不同的版本: MySQL Community Server:社区版,该版本完全免费,但是官方不提供技术支持。 MySQL Enterprise Server:企业版,它能够高性价比的为企业提供数据仓库应用,支持ACID事物处理,提供完整的提交、回滚、崩溃恢复和行级锁定功能。但是该版本需付费使用,官方提供电话及文档等技术支持。 目前最新的MySQL版本为MySQL 5.6,可以在官方网站https://www.360docs.net/doc/0f10086559.html,/downloads/下载该软件。下图1.2所示的MySQL官网上单击图片上的“Download”超链接或点击左边标记处,然后按照提示一步步操作就可以将MySQL软件下载到本地计算机中了。注意这里我们选择的是数据库版本是“Windows (x86, 32-bit), MSI Installer”,如下图1.3所示。 图1.2 MySQL官方网站

图1.3 选择MySQL版本 当点击download后会弹出如下页面: 注:下载MySql要求注册:<用户可注册或不注册>,如果不想注册就点击左下角标记处—点击后就弹出如图中下载提示->点击保存文件开始下载。 MySQL下载完成后,找到下载到本地的文件,按照下面所示的步骤双击进行安装:步骤1:双击MySQL安装程序(mysql-installer-community-5.6.10.1)会弹出如下图1.4所示: 图1.4 MySQL欢迎界面

步骤2:单击图1.4中的“Install MySQL Products”文字,会弹出的用户许可证协议窗口,如下图1.5所示: 图1.5 用户许可证协议窗口 步骤3:选中“I accept the license terms”的前面的选择框,然后点击【Next】按钮,会进入查找最新版本界面,效果如下图1.6所示: 图1.6 查找最新版本窗口 步骤4:单击【Execute】按钮,会进入安装类型设置界面,效果如下图1.7所示。 图1.7 安装类型设置窗口

mysql主从数据库服务器的设置

mysql 主从数据库服务器的设置 MySQL主从服务器(Replication)的设置: 1.首先在主服务器上为从服务器建立一个账户 mysql>grant replication slave on *.* to '用户名'@'主机' identified by '密码'; 2.登录从服务器使用步骤一申请的用户名和密码访问主数据库如果可以访问代表建立用户成功 mysql -u 用户名 -p密码 -h 主数据库IP -P3306 如果不能正常访问可能是防火墙的原因,可以停掉防火墙看看情况 /etc/iptables stop 3.编辑主数据库服务器配置文件 vi /etc/ #slave-config-start------------------ server-id=3(主从服务器server-id不能重复) binlog-do-db=需要复制的数据库名称 binlog-ignore-db=不需要复制的数据库名称 binlog-ignore-db=不需要复制的数据库名称

lower_case_table_names=1(大小写相同) #slave-config-end-------------------- 4.编辑从数据库服务器配置文件 vi /etc/ #slave-config-start---------------------------- server-id=2 master-host=主数据库服务器IP master-user=步骤一分配的用户名 master-password=步骤一分配的密码 master-port=3306 replicate-do-db=cetv master-connect-retry=60 lower_case_table_names=1 #slave-config-end------------------------------5.手动备份导入使主从数据库的数据一致 Slave_IO_Running: No Slave_SQL_Running: Yes 的解决方法 1.首先到主数据库中

MySQL详细安装图解

MySQL详细安装图解 我们以mysql-5.0.27-win32.exe为例,双击解压缩,运行“setup.exe”,出现如下界面 MySQL安装向导启动,按“Next”继续 选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,我们选择“Custom”,有更多的选项,也方便熟悉安装过程

在“Developer Components(开发者部分)”上左键单击,选择“This feature, and all subfeatures, will be installed on local hard drive.”,即“此部分,及下属子部分内容,全部安装在本地硬盘上”。在上面的“MySQL Server(MySQL服务器)”、“Client Programs(MySQL客户端程序)”、“Documentation(文档)”也如此操作,以保证安装所有文件。点选“Change...”,手动指定安装目录。 填上安装目录,我的是“F:\Server\MySQL\MySQL Server 5.0”,也建议不要放在与操作系统同一分区,这样可以防止系统备份还原的时候,数据被清空。按“OK”继续。

Back返回刚才的界面,按“Next”继续 确认一下先前的设置,如果有误,按“Back”返回重做。按“Install”开始安装。

正在安装中,请稍候,直到出现下面的界面 这里“Create a new free https://www.360docs.net/doc/0f10086559.html, account”是询问你是否要注册一个https://www.360docs.net/doc/0f10086559.html,的账号,或是“Login to https://www.360docs.net/doc/0f10086559.html,”使用已有的账号登陆https://www.360docs.net/doc/0f10086559.html,,一般不需要了,点选“Skip Sign-Up”,按“Next”略过此步骤。

Mysql数据库安装及生产环境下主从库同步配置

Mysql数据库安装及生产环境下主从库同步配置

目录 1安装M YSQL数据库...................................................................................................................................... 2生产环境下M Y SQL数据库主从同步配置................................................................................................. 2.1 主数据库配置 (5) 2.2 从数据库配置 (5) 3监控服务器............................................................................................................................................... 3.1 监控主数据库服务器 (6) 3.2 监控从数据库服务器 (6)

1安装Mysql数据库 安装环境: 系统:CentOS-6.6-x86_64 数据库:MySQL-server-5.5.42-1.el6.x86_64;MySQL-client-5.5.42-1.el6.x86_64 1.SSH方式登录到MySQL服务器 2.创建存放安装文件的目录 [root@localhost /]# mkdir -p /sw/mysql55 3.上传安装文件到上一步创建的目录 4.检查是否已安装过MySQL [root@localhost /]# rpm -qa | grep -i mysql MySQL-client-5.5.42-1.el6.x86_64 MySQL-server-5.5.42-1.el6.x86_64 5.如果已安装则移除,否则请跳过此步 [root@localhost /]# yum -y remove MySQL-server-5.5.42-1.el6.x86_64 [root@localhost /]# yum -y remove MySQL-client-5.5.42-1.el6.x86_64 删除老版本mysql的开发头文件和库 rm -fr /usr/lib/mysql rm -fr /usr/include/mysql rm -fr /var/lib/mysql rm -f /etc/https://www.360docs.net/doc/0f10086559.html,f 6.安装MySQL [root@localhost /]# cd /sw/mysql55/ [root@localhost mysql55]# rpm -ivh MySQL-server-5.5.42-1.el6.x86_64.rpm Preparing... ########################################### [100%] 1:MySQL-client ########################################### [100%] [root@localhost mysql55]# rpm -ivh MySQL-client-5.5.42-1.el6.x86_64.rpm Preparing... ########################################### [100%] 1:MySQL-server ########################################### [100%] 7.配置MySQL [root@localhost mysql55]# cp /usr/share/mysql/https://www.360docs.net/doc/0f10086559.html,f /etc/https://www.360docs.net/doc/0f10086559.html,f [root@localhost mysql55]# vi /etc/https://www.360docs.net/doc/0f10086559.html,f [client] #password = your_password port = 8819 socket = /var/lib/mysql/mysql.sock default-character-set=utf8 [mysqld] port = 8819 socket = /var/lib/mysql/mysql.sock lower_case_table_names=1

MYSQL主从数据库介绍__主库__从库

如上图所示,整个数据层有Group1,Group2,Group3三个集群组成,这三个集群就是数据水平切分的结果,当然这三个集群也就组成了一个包含完整数据的DB。每一个Group包括1个Master(当然Master也可以是多个)和N个Slave,这些Master和Slave的数据是一致的。比如Group1中的一个slave发生了宕机现象,那么还有两个slave是可以用的,这样的模型总是不会造成某部分数据不能访问的问题,除非整个Group里的机器全部宕掉,但是考虑到这样的事情发生的概率非常小(除非是断电了,否则不易发生吧)。 在没有引入集群以前,我们的一次查询的过程大致如下:请求数据层,并传递必要的分库区分字段(通常情况下是user_id)?数据层根据区分字段Route到具体的DB?在这个确定的DB内进行数据操作。这是没有引入集群的情况,当时引入集群会是什么样子的呢?看图一即可得知,我们的路由器上规则和策略其实只能路由到具体的Group,也就是只能路由到一个虚拟的Group,这个Group并不是某个特定的物理服务器。接下来需要做的工作就是找到具体的物理的DB服务器,以进行具体的数据操作。基于这个环节的需求,我们引入了负载均衡器的概念(LB)。负载均衡器的职责就是定位到一台具体的DB服务器。具体的规则如下:负载均衡器会分析当前sql的读写特性,如果是写操作或者是要求实时性很强的操作的话,直接将查询负载分到Master,如果是读操作则通过负载均衡策略分配一个Slave。我们的负载均衡器的主要研究放向也就是负载分发策略,通常情况下负载均衡包括随机负载均衡和加权负载均衡。随机负载均衡很好理解,就是从N个Slave中随机选取一个Slave。这样的随机负载均衡是不考虑机器性能的,它默认为每台机器的性能是一样的。假如真实的情况是这样的,这样做也是无可厚非的。假如实际情况并非如此呢?每个Slave的机器物理性能和配置不一样的情况,再使用随机的不考虑性能的负载均衡,是非常不科学的,这样一来会给机器性能差的机器带来不必要的高负载,甚至带来宕机的危险,同时高性能的数据库服务器也不能充分发挥其物理性能。基于此考虑从,我们引入了加权负载均衡,也就是在我们的系统内部通过一定的接口,可以给每台DB服务器分配一个权值,然后再运行时LB根据权值在集群中的比重,分配一定比例的负载给该DB服务器。当然这样的概念的引入,无疑增大了系统的复杂性和可维护性。有得必有失,我们也没有办法逃过的。 有了分库,有了集群,有了负载均衡器,是不是就万事大吉了呢?事情远没有我们想象的那么简单。虽然有了这些东西,基本上能保证我们的数据层可以承受很大的压力,但是这样的设计并不能完全规避数据库宕机的危害。假如Group1中的slave2 宕机了,那么系统的LB并不能得知,这样的话其实是很危险的,因为LB不知道,它还会以为slave2为可用状态,所以还是会给slave2分配负载。这样一来,问题就出来了,客户端很自然的就会发生数据操作失败的错误或者异常。这样是非常不友好的!怎样解决这样的问

MySql_5.5安装配置图解说明(亲身安装超详细)

MySql5.5安装详细说明打开MySql5.5安装文件开始: 点击Next 打上勾,再点击Next

点击Custom,说明如下: Typical(典型安装) Installs the most common program features.Recommended for most users. 意思是:安装最常用的程序功能。建议大多数用户使用。 Custom(自定义安装) Allows uers to choose which program features will be installed and where they will be installed.Recommended for advanced users. 意思是:允许用户选择安装的程序功能和安装的位置,建议高级用户使用。 Complete(完全安装) All program features will be installed.Requires the most disk space. 意思是:将安装所有的程序功能,需要最多的磁盘空间。

这里就要详细说明一下: 点一下Developer Components左边的+按钮,会看到带的图标,这代表这里的内容不会 被安装到本地硬盘上。带有图标的都是默认安装到本地硬盘上的。 Developer Components(开发者部分): 用左键单击向下的小箭头选择Entire feature will be installed on local hard drive。 意思是:即此部分,以及下属子部分内容全部安装在本地硬盘上。 MySQL Server(mysql服务器):照上面的做。 Client Programs(mysql客户端程序) :照上面的做。 Documentation(文档) :照上面的做。 Server data files(服务器数据文件):照上面的做。 Debug Symbols(调试符号):照上面的做。 这样操作,以保证安装所有文件,如果是图标的就不用去管它,操作完再点击Next。 点击Install

使用keepalived实现对mysql主从复制的主备自动切换

keepalived实现对mysql主从复制的主备自动切换使用MySQL+keepalived是一种非常好的解决方案,在MySQL-HA环境中,MySQL 互为主从关系,这样就保证了两台MySQL数据的一致性,然后用keepalived实现虚拟IP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换。 实验环境中用两台主机搭建了一个mysql主从复制的环境,两台机器分别安装了keepalived,用一个虚IP实现mysql服务器的主备自动切换功能. 模拟环境: VIP:192.168.1.197 :虚拟IP地址 Master:192.168.1.198 :主数据库IP地址 Slave:192.168.1.199 :从数据库IP地址 备注:MySQL的主从同步配置不在此文档中说明(前提:主从同步已完成) 安装步骤: 1、keepalived的安装 Yum install -y keepalived Chkconfig keepalived on 2、keepalived.conf文件的配置 Master:keepalived.conf vi /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { kenjin@https://www.360docs.net/doc/0f10086559.html, } notification_email_from kenjin@https://www.360docs.net/doc/0f10086559.html, smtp_connect_timeout 3 smtp_server https://www.360docs.net/doc/0f10086559.html,

MySQL主从同步原理+部署

MySQL主从同步原理+部署 一.主从的作用: 1.可以当做一种备份方式 2.用来实现读写分离,缓解一个数据库的压力 二.MySQL主从备份原理 master 上提供binlog , slave 通过 I/O线程从 master拿取 binlog,并复制到slave的中继日志中 slave 通过 SQL线程从 slave的中继日志中读取binlog ,然后解析到slave中 部署主从环境:主服务器:192.168.1.110(编译好的MySQL5.1版本的数据库)从服务器:192.168.1.120(编译好的MySQL5.1版本的数据库) (温馨提示:主和从数据库版本必须是一样。或者主库的数据库版本必须比从库高,不然会导致很多故障的发生。) 三:生产环境应用MySQL主从同步场景: 1.一般用主库做为提供业务用户写操作(比如:在互联网上写一条微博,这时候就会 写到mysql数据库的主库中) 2.一般用从库做为提供业务用户读操作(比如:在互联网上,我想看一条微博,这时 候里面提供数据就是MySQL数据库的从库中。) (1)在主服务器(192.168.1.110)上操作。 [root@Jiechao ~]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0C:29:5E:6F:A7 inet addr:192.168.1.110 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe5e:6fa7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:141354 errors:0 dropped:0 overruns:0 frame:0 TX packets:140807 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:142083379 (135.5 MiB) TX bytes:17815696 (16.9 MiB) Interrupt:193 Base address:0x2000 [root@Jiechao ~]# vi /etc/https://www.360docs.net/doc/0f10086559.html,f [mysqld]在mysqld下添加以上两行。 server-id = 1 log-bin=jiechao-bin [root@Jiechao ~]# /etc/init.d/mysqld restart Shutting down MySQL[ OK ] Starting MySQL.[ OK ]

mysql在windows下的安装配置

MySQL在Windows下的基本配置 文章分类:数据库 说明:本文针对mysql-noinstall版本,也就是解压缩版在Windows下的基本配置 操作系统: Windows XP MySQL版本: mysql-5.1.50-win32 1、下载MySQL解压包 mysql-noinstall-5.1.50-win32.zip 解压缩到某个目录。例如:D:\Java\mysql 2、配置 MySQL的根目录,里面有多个文件名如my-****.ini形式的文件,这就是MySQL配置的样例文件。可以选取一个将其名字改为my.ini,MySQL启动的时候就是读取这个my.ini文 件来决定数据库的各项参数。 在my.ini文件中需要进行配置的主要是两个方面,一个是客户端,一个是服务器端。修改my.ini文件,添加以下内容: Sql代码 1.# The following options will be passed to all MySQL clients 2.[client] 3.#password = your_password 4.#客户端端口 5.port = 3306 6.socket = /tmp/mysql.sock 7.# 设置mysql客户端的字符集 8.default-character-set=gbk

Sql代码 1.# The MySQL server 2.[mysqld] 3.port = 3306 4.socket = /tmp/mysql.sock 5. 6.# 设置mysql服务器的字符集 7.default-character-set=gbk 8. 9.# 设置mysql的默认存储引擎 10.default-storage-engine=INNODB 11. 12.# 设置mysql的安装目录 13.basedir=d:/Java/mysql/mysql-5.1.50-win32 14. 15.# 设置mysql数据库的数据的存放目录,必须是data 16.datadir=d:/Java/mysql/mysql-5.1.50-win32/data 完成后保存即可。 3、启动数据库 为了方便,可以把数据库注册成一个服务: 进入D:\Java\mysql\mysql-5.1.50-win32\bin 目录,运行命令: mysqld --install mysql 这样就会在系统服务中注册了一个名字为mysql的服务( mysqld --remove mysql 卸载服务) 在环境变量path中加入 D:\Java\mysql\mysql-5.1.50-win32\bin 然后就可以正常使用MySQL数据库了.

5.6版本MySQL的下载、安装及配置过程

下载及安装MySQL 自MySQL版本升级到5.6以后,其安装及配置过程和原来版本发生了很大的变化,下面详细介绍5.6版本MySQL的下载、安装及配置过程。 图1.1 MySQL5.6 目前针对不同用户,MySQL提供了2个不同的版本: MySQL Community Server:社区版,该版本完全免费,但是官方不提供技术支持。 MySQL Enterprise Server:企业版,它能够高性价比的为企业提供数据仓库应用,支持ACID事物处理,提供完整的提交、回滚、崩溃恢复和行级锁定功能。但是该版本需付费使用,官方提供电话及文档等技术支持。 目前最新的MySQL版本为MySQL 5.6,可以在官方网站(https://www.360docs.net/doc/0f10086559.html,/downloads/)上面下载该软件。在下图1.2所示的MySQL官网上单击右下角的“MySQL Installer 5.6”超链接,然后按照提示一步步操作就可以将MySQL软件下载到本地计算机中了。注意这里我们选择的是数据库版本是“Windows (x86, 32-bit), MSI Installer”,如下图1.3所示。 图1.2 MySQL官方网站

图1.3 选择MySQL版本 MySQL下载完成后,找到下载到本地的文件,按照下面所示的步骤双击进行安装: 步骤1:双击MySQL安装程序(mysql-installer-community-5.6.10.1),会弹出如下图1.4所示的欢迎窗口。 图1.4 MySQL欢迎界面 步骤2:单击图1.4中的“Install MySQL Products”文字,会弹出的用户许可证协议窗口,如下图1.5所示。

Mysql主从复制搭建

Mysql主从复制环境搭建 By Intery 1.准备工作 使用两台电脑搭建,主服务器(Master),从服务器(Slave),为了保证网络传输的可用性,建议首次搭建选用局域网环境 主(Master)ip:10.110.144.58 从(Slave)ip:10.110.144.46 2.搭建过程 本环境是在ubuntu12.04系统下搭建 A.Mater配置 (注:whereis mysql查看mysql安装的相关位置) 修改/etc/mysql/https://www.360docs.net/doc/0f10086559.html,f文件 添加 server-id = 1 log_bin = /var/log/mysql/master-bin log_bin_index = /var/log/mysql/master-bin.index 分别表示服务器id号 登记日志文件的名称 登记日志索引文件的名称 特别注意:skip-networking与bind-address参数不能使用,否则无法实现授权用户的abc (123)的远程访问。此问题花费我3个小时宝贵时间。 配置完成后重启mysql Root>mysqladmin –u root –p root shutdown Root>mysql_safe --user=mysql & (权限不够加sudo) 通过root用户进入mysql中进行授权: Mysql>grant replication slave,reload,create user,super on *.* to ‘abc’@’10.110.144.%’identified by ‘123’ with grant option; (with grant option可以不用,这是使abc用户用于授权资格的选项) 授权成功后即可通过abc(123)从Master进行复制 ↑主(Master)配置完成

相关文档
最新文档