`
swachian
  • 浏览: 74668 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

架设java mysql主备及HA切换服务器

阅读更多

目的: 用两台PC server实现主从备份,其中OS和应用的热备由HA完成,数据库采用mysql,采用主从模式实现数据库热备。

两台服务器是hp dl380g5,硬盘采用预设运行的raid5。

  •  
    • raid5的定义

RAID5需要三块或三块以上同厂家、同型号、同容量的硬盘搭建,硬盘需要支持热插拔,所组成的阵列容量是所有硬盘容量减去少于一块硬盘的容量之差 。在三盘数据存储之外,还会在存储的同时自动生成奇、偶校验信息,分别存储在不同的硬盘里,占据相对微小的空间。奇偶校验信息耗费的空间有限,但恢复数据的能力却庞大无比。拔出故障盘,换上无故障的新盘,存储于另外一盘中的相对奇或偶校验,均能依据存储在不同盘中的奇、偶校验信息对数据进行有效的恢复。

接着是分区,结果如下:

/boot 2g
/home 40g
/ 30g
/var 30g
/usr 30g
/usr/local 10g
/opt 60g
swap 8g
 

  安装jdk和设置环境变量

  • 下载jdk-1_5_0_15-linux-amd64.bin
  • 放到/usr/local下面
  • 解压
  • 将下列脚本放入.bash_profile中
    PATH=$PATH:$HOME/bin:/usr/local/jdk1.5.0_15/bin
    CLASSPATH=/usr/local/jdk1.5.0_15/lib:/usr/local/jdk1.5.0_15/jre/lib
    JAVA_HOME=/usr/local/jdk1.5.0_15
    export PATH
    export CLASSPATH
    export JAVA_HOME
      
  • 执行 su - 使环境变量生效
  • 可以卸载自带的jdk
    卸载自带的jdk
    用root用户登陆到系统,打开一个终端输入
    # rpm -qa|grep gcj
    显示内容其中包含下面两行信息
    libgcj-4.1.1-52.el5
    libgcj-4.1.1-52.el5
    java-1.4.2-gcj-compat-1.4.2.0-40jpp.112

    卸载 java-1.4.2-gcj-compat-1.4.2.0-40jpp.112
    # rpm -e java-1.4.2-gcj-compat-1.4.2.0-40jpp.112
     
  • 验证一下 java -version

安装mysql

  • 下载src包
写道
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/opt/mysql --with-charset=utf8
shell> make
shell> make install
shell> cp support-files/my-huge.cnf /etc/my.cnf
shell> cp support-files/mysql.server /etc/init.d/mysqld ; chmod
shell> ln -s ../init.d/mysql S85mysqld && ln -s ../init.d/mysql K85mysqld
shell> cd PREFIX
shell> bin/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql var
shell> bin/mysqld_safe --user=mysql &
shell>/opt/mysql/share/mysql/mysql.server stop #停止

开放远程访问权限
* 登录mysql后, grant all on *.* to 'mysql'@'ip' identified by 'password';
在my.cnf中设置默认引擎是innodb
default-storage-engine=INNODB

 

写道
shell> mysql -h host -u user -p
shell> mysql -h host -u user -p menagerie
shell> mysql < batch-file > mysql.out

mysql> SELECT VERSION(), CURRENT_DATE;
mysql> \c #表示取消
mysql> SHOW DATABASES;
mysql> USE test
mysql> CREATE DATABASE menagerie; #database名和table名大小写敏感,建议只采用小写
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
    -> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
mysql> DESCRIBE table;
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet LINES TERMINATED BY '\r\n';
mysql> INSERT INTO pet
    -> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
mysql> SELECT * FROM pet WHERE name REGEXP '^b'; 大小写不敏感
mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b'; 大小写敏感
mysql> source filename ; #在mysql中执行sql语句脚本文件
mysql> \. filename
CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT ,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
 ); #The AUTO_INCREMENT attribute can be used to generate a unique identity for new rows

select中的一些函数:
(RIGHT(CURDATE(),5)<RIGHT(birth,5)) 截取字符串
YEAR(CURDATE()) 获取年份
MAX(article)
CONCAT(p1.id, p1.tvab) + 0 AS tvid



 

shell> mysqldump [options] db_name [tables]
shell> mysqldump [options] --databases db_name1 [db_name2 db_name3...]
shell> mysqldump [options] --all-databases

shell> mysqlimport [options] db_name textfile1 [textfile2 ...]

mysql> show engines\G

shell> chown -R user_name /path/to/mysql/datadir

 

配置Master-Master的同步

1. 两台服务器做ttt,分别叫做ttt1和ttt2

2. 启动或关闭mysql的脚本

/opt/mysql/share/mysql/mysql.server {start|stop}

3. 给ttt1和ttt2的mysql互相Grant权限

4. master-master的配置关键在于设置auto_increment_increment 和 auto_increment_offset

这两个东西其实影响的是mysql里面自增字段的增长方式。比如某个走1 3 5, 另一个就会走2 4 6.

一般配置的原则是:

      如果有N 个Mysql 几点(N=2),那么auto_increment_increment就在所有的节点上设置成N,同时每个节点

      设置一个不同的auto_increment_offset值(1, 2, ..., N)

ttt1上

log-bin=mysql-bin
server-id       = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1

master-host=ttt2
master-port=3306
master-user=mysql
master-password=mysql
master-connect-retry=60

relay-log = slave-relay.log
relay-log-index = slave-relay-log.index
expire_logs_days        = 10
max_binlog_size         = 2000M
slave-skip-errors=126,1062
 

 

ttt2上

log-bin=mysql-bin
server-id       =2
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 2

master-host=ttt1
master-port=3306
master-user=mysql
master-password=mysql
master-connect-retry=60
log-bin=mysql-bin
relay-log = slave-relay.log
relay-log-index = slave-relay-log.index
expire_logs_days        = 10
max_binlog_size         = 2000M
slave-skip-errors=126,1062

 5将ttt1上的数据库dump到ttt2上

ttt1>
mysqldump -u root --opt exampledb > snapshot.sql
scp snapshot.sql root@ttt2:/tmp

ttt2>
/usr/bin/mysqladmin --user=root --password=yourrootsqlpassword stop-slave
cd /tmp
mysql -u root  exampledb < snapshot.sql

 6. 查看各自master的状态

    show master status

 7. 指定各自master开始读的位置

CHANGE MASTER TO MASTER_HOST='ttt1', MASTER_USER='mysql', MASTER_PASSWORD='mysql', MASTER_LOG_FILE='mysql-bin.000009', MASTER_LOG_POS=84828;

CHANGE MASTER TO MASTER_HOST='ttt2', MASTER_USER='mysql', MASTER_PASSWORD='mysql', MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=84828;

 8. 查看并验证

    在ttt1和ttt2上输入show slave status。输出结果中

           Slave_IO_Running: Yes
          Slave_SQL_Running: Yes

   需要是yes。

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
SHOW SLAVE STATUS\G
exit;
mysql> UNLOCK TABLES;

mysql> CHANGE MASTER;
mysql> stop slave;
mysql> start slave;
mysql> reset master;

 

http://www.linuxdiyf.com/bbs/viewthread.php?tid=64101&highlight=

 

番外--mysql的rails驱动安装

http://www.tmtm.org/en/mysql/ruby/
tar xzvf mysql-ruby-2.7.3.tar.gz
cd mysql-ruby-2.7.3
ruby extconf.rb --with-mysql-dir=/opt/mysql5
make && make install
 
分享到:
评论

相关推荐

    App Mysql 架设服务器

    标题中的“App Mysql 架设服务器”指的是利用特定的应用程序来搭建MySQL数据库服务器的过程。在IT领域,MySQL是一个广泛使用的开源关系型数据库管理系统(RDBMS),它以高效、稳定和易于管理著称,尤其适合中小型...

    第6课 FTP服务器架设教程

    FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设...

    Linux架设支持Mysql的动态Web服务器[参考].pdf

    Linux 架设支持 Mysql 的动态 Web 服务器 本文将从安装 PHP 动态 Web 服务器、Mysql 数据库的安装配置手册开始,通过在服务器安装 Apache、Mysql、PHP 等功能实现一个建立一个 PHP 全动态的 Web 站点。 安装 Mysql...

    HTTP服务器架设 HTTP服务器架设

    HTTP服务器架设 HTTP服务器架设 HTTP服务器架设 HTTP服务器架设 HTTP服务器架设 HTTP服务器架设

    架设freeradius+mysql 的radius服务器

    本文将详细讲解如何在RedHat Linux 7.2系统上架设一个结合了Freeradius和MySQL的Radius服务器。 首先,我们需要安装MySQL数据库。在RedHat Linux上,可以通过RPM包进行安装,例如`mysql-3.23.41.1.i386.rpm`,`...

    内网架设服务器详解 内网架设服务器详解

    内网架设服务器详解 内网架设服务器详解 内网架设服务器详解

    服务器架设教程(服务器架设)

    服务器架设教程【服务器架设教程】(服务器架设)

    通俗易懂的服务器架设教程

    服务器架设教程是一个重要的主题,尤其对于那些想要深入了解IT基础设施管理、网络服务部署以及网站运营的初学者来说。本教程采用通俗易懂的语言,旨在帮助你轻松掌握服务器配置和管理的基本概念。 首先,我们要理解...

    架设教程文件,架设搭建教程,Java

    在本教程中,我们将深入探讨如何使用Java技术来架设和搭建冒险岛079游戏服务器。冒险岛079是一款流行的2D横版网络游戏,而"molecular81r"可能指的是该版本的一个特定补丁或开发者。本文将涵盖以下几个关键知识点: ...

    linux服务器的架设

    Linux服务器架设是一个涉及多项技术的知识领域,包括Linux操作系统、网络基础、Web服务器配置等。在此,我们将详细阐述从选择合适的Linux发行版到完成一个完整Web服务器设置的整个过程。 首先,文档提到了Linux...

    畅通无阻-高效架设RedHatLinux服务器

    FTP文件服务器、Sendmail电子邮件服务器、Apache WWW服务器、MySQL数据库服务器、Jabber即时消息服务器、INN新闻组服务器的快速架设与应用,以及系统安全和防火墙的配置等。 光盘主要内容:快速安装Linux系统与管理...

    知名架设服务器软件很好用

    5. **其他组件**:XAMPP还包含一些额外的工具,如FileZilla FTP服务器、Tomcat(用于运行Java应用)、 Mercury邮件服务器、以及PhpMyAdmin,后者是一个直观的界面,用于管理和控制MySQL数据库。 6. **跨平台性**:...

    Linux服务器配置 项目七 架设MySql数据库服务器.ppt

    - 安装服务器及相关文件:`rpm -ivh -f --nodeps mysql-server-5.0.77-3.el5.i386.rpm` - 安装开发MySQL程序所需的文件:`rpm -ivh -f --nodeps mysql-devel-5.0.77-3.el5.i386.rpm` 4. 验证安装: `rpm -qa | ...

    迷你web服务器架设软件

    迷你Web服务器架设软件是一种小巧而实用的工具,它使得个人用户或小型团队能够在本地计算机上快速搭建一个Web服务器环境,以便进行网站开发、测试或简单的网页浏览。这个标题所指的“迷你”意味着该软件可能具有较小...

    Windows_Server_2003架设Web服务器

    展开网站文件夹,右击打开默认网站的属性进行配置,切换到网站选项卡,填写 Web 服务器的 IP 地址(这里是填你在 Internet 上的 IP 地址,并不是本地 IP 地址),点击打开右边的高级选项,编辑 TCP 端口号及主机头值...

    Win2003架设邮件服务器

    Win2003架设邮件服务器

    JDK1.5+Tomcat5+MySql+Juddi架设UDDI服务器.pdf

    JDK1.5、Tomcat5、MySQL和JUDDI用于搭建UDDI服务器的知识点主要围绕在Java开发工具包、Web服务器容器、数据库服务器以及统一描述、发现和集成服务的部署与配置。以下是详细的知识点说明: 1. JDK1.5:Java ...

    linux的各种服务器架设总汇

    Linux服务器架设是信息技术领域中非常重要的技能,尤其在开源操作系统Linux的环境下,架设各种服务器以满足不同的业务需求。在上述文件中,我们能够找到关于Linux中各种服务器架设的知识点。 1. Apache Web服务器...

Global site tag (gtag.js) - Google Analytics