আমি টিউটোরিয়ালের লিঙ্ক সরবরাহ করেছি। কেবল মনে রাখবেন যে উবুন্টুতে, my.cnf ফাইলটি /etc/mysql/my.cnf এ আছে এবং হাটফোরজ টিউটোরিয়ালের মতো /etc/my.cnf এ নেই। আমার সেটআপে, আমি লক পড়ার সাথে ফ্ল্যাশ ট্যাবলেট ব্যবহার করিনি; মাস্টার উপর। যদি আপনার মাস্টার সার্ভারে প্রচুর লেখার ক্রিয়াকলাপ থাকে তবে ব্যাক আপ নেওয়ার আগে আপনাকে সেই কমান্ডটি চালিয়ে আপনার টেবিলগুলি লক করতে হবে। আপনি যদি লক পড়ার সাথে ফ্ল্যাশ ট্যাবলেট ব্যবহার করেন ;, তবে আপনার ব্যাকআপের পরে, আপনি আনলক ট্যাবলেটগুলি চালাতে চাইবেন। আপনি যদি কোনও সমস্যায় পড়ে থাকেন তবে আমাকে জানান।
এখানে টিউটোরিয়ালটি আমি রেডহাট / সেন্টোস-এর জন্য তৈরি হাওটো ফরজে পেয়েছি:
http://www.howtoforge.com/mysql_database_replication
উবুন্টুর জন্য অন্য টিউটোরিয়ালটি ঠিক আছে
দেখুন
আমি যে কনফিগারেশনটি ব্যবহার করেছি তা এখানে:
মাস্টার সার্ভারে
মাস্টার সার্ভারটি কনফিগার করুন:
vi /etc/mysql/my.cnf
[mysqld]
# bind-address = 127.0.0.1 (comment this out)
server_id = 1
log_bin = /var/log/mysql/mysql-bin.log
log_bin_index = /var/log/mysql/mysql-bin.log.index
max_binlog_size = 100M
expire_logs_days = 1
মাইএসকিউএল পুনরায় চালু করুন:
/etc/init.d/mysql restart
মাইএসকিএল এর কনসোলের সাথে সংযুক্ত করুন: মাইএসকিএল-ই রুট -প্যাসওয়ার্ড
প্রতিলিপি ব্যবহারকারীকে অনুমতি এবং অনুমতি প্রদান করুন।
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'ipaddressofslave' IDENTIFIED BY 'replicationuserpassword';
এই তথ্যটি কোথাও অনুলিপি করতে বা এটি দৃশ্যমান রেখে দেওয়ার বিষয়টি নিশ্চিত করুন
SHOW MASTER STATUS \G;
mysql> show master status \G;
File: mysql-bin.000001
Position: 100
Binlog_Do_DB:
Binlog_Ignore_DB:
mysql> quit
একটি ফাইলের ডাটাবেস ডাম্প:
mysqldump -u root -p databasename > /tmp/databasename-backup.sql
স্ক্যালপ ব্যবহার করে স্লেভ সার্ভারে ডাটাবেস ডাম্পটি অনুলিপি করুন বা আপনি চাইলে ftp ব্যবহার করুন:
scp /tmp/databasename-backup.sql root@ipaddressofslave:/tmp/
স্ল্যাভ সার্ভারে
মাইএসকিএল কনফিগারেশন সম্পাদনা করুন:
vi /etc/mysql/my.cnf
[mysqld]
# slave server configuration
server_id = 2
# this is optional, but I find it useful to specify where the relay logs go to control.
# Don't forget to create the /var/log/mysql directory and give mysql rights to it.
# chown mysql:mysql -R /var/log/mysql
# disk space
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index
relay_log_space_limit = 2000M
মাইএসকিউএল পুনরায় চালু করুন: /etc/init.d/mysql restart
ব্যাকআপ পুনরুদ্ধার করুন:
mysql -u root -ppassword nameofthedatabase < /tmp/databasename-backup.sql
মাইএসকিউএলে কানেক্ট করুন:
mysql -u root -ppassword
stop slave;
# master log file and master_log_pos taken from show master status above
CHANGE MASTER TO master_host='ipaddressmaster', master_port=3306, master_user='replication', master_password='replicationuserpassword', master_log_file='mysql-bin.000001', master_log_pos=100;
start slave;
চালান SHOW SLAVE STATUS\G
:
mysql> show slave status\G;
Slave_IO_State: Waiting for master to send event
Master_Host: ipaddressmaster
Master_User: replication
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.0000001
Read_Master_Log_Pos: 100
Relay_Log_File: mysql-relay-bin.000001
Relay_Log_Pos: 1
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
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: 17324288
Relay_Log_Space: 17324425
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.02 sec)
পরে, মনে রাখবেন যে প্রতিলিপি বিভিন্ন কারণে ব্যর্থ হতে পারে। স্লেভটিতে, আপনি 'স্টলাস শ্যাভল স্ট্যাটাস \ জি কমান্ড' চালিয়ে স্ট্যাটাসটি পর্যবেক্ষণ করতে পারেন; বা স্থিতি পর্যবেক্ষণ করতে ক্রোন জব স্থাপন করা এবং যদি এটি ব্যর্থ হয় তবে ইমেলগুলি প্রেরণ করুন। এই আদেশ থেকে আউটপুট নিয়ে ফ্যামিলার পান। যদি প্রতিলিপিটি সঠিকভাবে চলমান থাকে তবে আপনার "স্লেভ_আইও_সেটেট: ইভেন্টটি প্রেরণের জন্য মাস্টার অপেক্ষা করা" দেখা উচিত।
একবার আপনি এই সেটআপটি সঠিকভাবে পেয়ে গেলে, সেই অনুলিপি পর্যবেক্ষণ করার জন্য আমি আপনাকে একটি স্ক্রিপ্ট সরবরাহ করতে পারি।
মাইএসকিউএলে ত্রুটি লগ নিরীক্ষণের জন্য এখানে একটি স্ক্রিপ্ট রয়েছে। আপনি যদি লাইন যুক্ত করেন
[Mysqld]
লগ-ত্রুটি = /var/log/mysql/mysql.err
পুনরায় আরম্ভ করুন mysql: /etc/init.d/mysql পুনরায় আরম্ভ করুন
তারপরে আপনি লগ ফাইলটি নিরীক্ষণ করতে নিম্নলিখিত স্ক্রিপ্টটি ব্যবহার করতে পারেন। লগটি কোনওভাবে পরিবর্তিত হলে, স্লেভ সার্ভারে একটি ত্রুটি ঘটেছে তা আপনাকে জানিয়ে একটি ইমেল পাবেন। আপনি যদি নিয়মিত ভিত্তিতে ত্রুটি লগ চেক করতে চান তবে আপনার ক্রোনটবে এই স্ক্রিপ্টটি যুক্ত করতে হবে।
এখানে একটি নমুনা স্ক্রিপ্ট: /somepath/monitor_mysql_log.sh
#! /bin/sh
MAIL_TO="addressemail@something.com"
# This is the log that will be monitored.
# If any changes occur to this, then take appropriate action.
MONITORED_LOG=/var/log/mysql/mysql.err
# We will need this log to see whether any changes occured to /tmp/goreb.log
TEMP_LOG=/tmp/.mysql.err.1
# This is a 1-time command i.e. create the log file if it does nto exist.
[ ! -f $TEMP_LOG ] && touch -r $MONITORED_LOG $TEMP_LOG
[ $MONITORED_LOG -nt $TEMP_LOG ] && echo "an error occurred in mysql" | mail -s "Error on MySQL" $MAILTO
# Update $TEMP_LOG with the new modified date of $MONITORED_LOG
touch -r $MONITORED_LOG $TEMP_LOG
Crontab যোগ করতে।
স্ক্রিপ্টটি সম্পাদনযোগ্য করুন:
chmod +x /somepath/monitor_mysql_log.sh
ক্রোনটব আপডেট করুন:
crontab -e
* * * * * /somepath/monitor_mysql_log.sh
এবং স্ক্রিপ্ট প্রতি মিনিটে চালানো হবে।
আমি যে স্ক্রিপ্টটি দিয়েছি তা হ'ল একটি স্ক্রিপ্ট যা আমি খুব দ্রুত একসাথে রেখেছি। এছাড়াও, আপনার সার্ভারটি ইমেল প্রেরণে সক্ষম হওয়ার জন্য, আপনাকে পোস্টফিক্স বা সেন্ডমেলের মতো কিছু ইনস্টল করতে হবে।