日期:2014-05-16  浏览次数:20814 次

mysql主从搭建实现

MySQL是应用广泛的关系型数据库,当数据规模逐渐扩大,并且重要性不断提高的情况下,单数据库的可靠性和性能受到严重挑战,所以就会有了主从,读写分离等需求了。

首先在2台linux下安装mysql,最好是内网机器,可以用内网网卡做主从同步,网络质量和安全都可以得到保证。


1、安装一些常用包:

yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

yum -y install perl perl-URI perl-DBI perl-String newt-perl

2、下载并安装mysql

wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.3-m3.tar.gz/from/http://mysql.he.net/

tar -zxf mysql-5.5.3-m3.tar.gz


3、编译安装mysql

cd mysql-5.5.3-m3


./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=partition,innobase,myisammrg &&make &&make install


4、建立mysql用户和数据文件夹等


/usr/sbin/groupadd mysql

/usr/sbin/useradd -g mysql mysql

chown -R mysql:mysql /usr/local/mysql
mkdir -p /home/mysql/data

mkdir -p /home/mysql/binlog
mkdir -p /home/mysql/relaylog

chown -R mysql:mysql /home/mysql/*


5、初始化数据库

/usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql --datadir=/home/mysql/data --user=mysql


6、建立mysql启动 关闭脚本:vim /etc/init.d/mysql 如下:

#!/bin/sh

 mysql_port=3306
 mysql_username="root" //这里要修改
 mysql_password="12345" //这里要修改
 function_start_mysql() 
{ 
     printf "Starting MySQL...\n" 
     /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/home/mysql/my.cnf 2>&1 > /dev/null & 
} 
 function_stop_mysql() 
{ 
     printf "Stoping MySQL...\n" 
     /usr/local/mysql/bin/mysqladmin -u ${mysql_username} -p${mysql_password} -S /tmp/mysql.sock shutdown 
} 
 function_restart_mysql() 
{ 
     printf "Restarting MySQL...\n" 
      function_stop_mysql
     sleep 5
      function_start_mysql
} 
 function_kill_mysql() 
{ 
     kill -9 $(ps -ef |grep 'bin/mysqld_safe'| grep ${mysql_port} | awk '{printf $2}') 
     kill -9 $(ps -ef |grep 'libexec/mysqld' | grep ${mysql_port} | awk '{printf $2}') 
} 
if [ "$1" = "start" ]; then
      function_start_mysql
 elif [ "$1" = "stop" ]; then
      function_stop_mysql
 elif [ "$1" = "restart" ]; then
      function_restart_mysql
 elif [ "$1" = "kill" ]; then
      function_kill_mysql
else 
     printf "Usage: /home/mysql/mysql {start;stop;restart;kill}\n" 
 fi

?7、建立mysql配置文件:vim /home/mysql/my.cnf

主从的配置文件差异就在一个地方,主数据库这个值如下:

server-id = 1 从数据库不等于1就可以了

[client] 
 character-set-server = utf8
 port = 3306
socket = /tmp/mysql.sock

[mysqld] 
 character-set-server = utf8
 replicate-ignore-db = mysql
 replicate-ignore-db = test
 replicate-ignore-db = information_schema
 user = mysql
 port = 3306
socket = /tmp/mysql.sock
 basedir = /usr/local/mysql
 datadir = /home/mysql/data
log-error = /home/mysql/mysql_error.log 
 pid-file = /home/mysql/mysql.pid
 open_files_limit = 10240
 back_log = 600
 max_connections = 5000
 max_connect_errors = 6000
 table_cache = 614
 external-locking = FALSE 
 max_allowed_packet = 32M
 sort_buffer_size = 1M
 join_buffer_size = 1M
 thread_cache_size = 300
#thread_concurrency = 8 
 query_cache_size = 512M
 query_cache_limit = 2M
 query_cache_min_res_unit = 2k
 default-storage-engine = MyISAM
 thread_stack = 192K
 transaction_isolation = READ-COMMITTED
 tmp_table_size = 246M
 max_heap_table_size = 246M
 long_query_time = 3
log-slave-updates
log-bin = /home/mysql/binlog/binlog
 binlog_cache_size = 4M
 binlog_format = MIXED
 max_binlog_cache_size = 8M
 max_binlog_size = 1G