উবুন্টু সার্ভারে পোস্টগ্রেস 9.1 থেকে 9.3 এ আপগ্রেড করা হচ্ছে


27

আমার প্রোডাকশন সার্ভারটি রয়েছে (উবুন্টু 13.10) পোস্টগ্রেস্কেল 9.1 দিয়ে চলছে।

আমি 9.3 এর কয়েকটি বৈশিষ্ট্য ব্যবহার করতে চাই, তাই আপগ্রেড করতে চাই।

কেউ আমাকে 9.1 থেকে 9.3 থেকে আপগ্রেড করতে সহায়তা করতে পারে যাতে 30 মিনিটের বেশি না হওয়ার ডাউনটাইম থাকে। অথবা তাই?

প্রধান উদ্বেগ একটি ডেটা ক্ষতি বা ফাইলের অতিরিক্ত কাজকে রোধ করে prevent


2
পোস্টগ্রিস ডকস সত্যিই ভাল। google.co.uk/#q=postgres+
আপগ্রেড ++++++++9.3

আমি প্রতি সে ডিবিএ নই (বিজোড় পোস্টগ্রিস ইনস্টল এবং এমনকি অদ্ভুত মাইএসকিএল দেখাশোনা করতে হবে; this), এবং এই পোস্টটি পুরানো, তবে কেন আপনি কোনও এক্স.04 এর পরিবর্তে কোনও উবুন্টু এক্স.10 রিলিজ ব্যবহার করবেন? LTS?
Tink

উত্তর:


28

বিভিন্ন বড় সংস্করণ (যেমন 9.1 থেকে 9.3) থেকে পোস্টগ্রিএসকিউএল আপগ্রেড করার মূলত তিনটি উপায় রয়েছে।

Pg_dump দিয়ে আপগ্রেড করা হচ্ছে

প্রথমটি, এবং যদি সম্ভব হয় তবে সুপারিশ করা হয়, নতুন (9.3) সংস্করণের বাইনারি ব্যবহার করে পুরানো (9.1) সংস্করণের একটি ডাম্প করা এবং এটি নতুন সংস্করণের তৈরি নতুন ক্লাস্টারে পুনরুদ্ধার করা।

এই পদ্ধতিরটি সাধারণত ধীর হয় তবে এটি সর্বাধিক সম্ভাব্য। এটিকে আরও দ্রুত তৈরি করার জন্য একটি পরামর্শ, সমঝোতা ব্যবহার করছে। সমান্তরাল কাজের সাথে ডাম্প করতে, আপনি এটি করতে পারেন:

$ pg_dump --format=directory --jobs=4 --no-synchronized-snapshots --file=/path/to/mydump mydatabase

আপনার কাছে থাকা প্রতিটি ডাটাবেসের জন্য আপনাকে এটি করতে হবে, --jobs=4যে কোনও মানের সাথে মান সমন্বয় করুন (কিছু মানের 2 থেকে কোনও সংখ্যার কোরের টেস্ট করুন এবং দেখুন যে আরও ভাল গতি দেয়)। এছাড়াও, এই ধাপের সময়, কাউকে ডেটাবেসে সংক্রামিত করা উচিত নয়, যে কোনও সংশোধনীর ফলে কলুষিত ডাম্প হবে (অনিরাপদ বিকল্পের কারণে --no-synchronized-snapshots)।

এর পরে, আপনি নতুন উদাহরণে ডাম্পগুলি পুনঃস্থাপন করতে পারবেন pg_restore:

$ createdb <options> -T template0 mydatabase
$ pg_restore --exit-on-error --jobs=4 --dbname=mydatabase /path/to/mydump

এর পরে, এটি ANALYZEআপনার ডাটাবেসে চালিত হওয়ার পরামর্শ দেওয়া হচ্ছে :

$ vacuumdb --analyze-only mydatabase

(যদি আপনি সময় সামর্থ, শুধুমাত্র চালানো --analyzeএছাড়াও VACUUMডাটাবেস এবং আপডেট দৃশ্যমানতা মানচিত্র)

পিজি_আপগ্রেড দিয়ে আপগ্রেড করা হচ্ছে

অন্য বিকল্প, অবদানpg_upgrade ব্যবহার করা হয়--linkপদ্ধতিটি ব্যবহার করে এটি পোস্টগ্র্যাস এসকিউএল আপগ্রেড করার সত্যিই দ্রুত উপায় সরবরাহ করে।

ব্যবহারের আগে আপনাকে পুরো ডেটা ডিরেক্টরিতে একটি ব্যাকআপ তৈরি করতে হবে, কারণ --linkমোডে কিছু ভুল হয়ে গেলে আপনি উভয় ডেটা (নতুন এবং পুরানো) আলগা করতে পারেন। এছাড়াও, পুরো দস্তাবেজগুলি এবং নীচে বিশেষত নোটগুলি পড়ুন (পিজি_আপগ্রেডের জন্য কিছু সীমাবদ্ধতা রয়েছে)।

আপডেট: দয়া --checkকরে নির্দিষ্ট আদেশটি চালানোর আগে বিকল্পটি ব্যবহার করুন । এছাড়াও, বৃহত ডাটাবেসের জন্য একটি স্ক্রিন সেশনে এই কমান্ডটি চালানো বাঞ্ছনীয়।

ট্রিগার ভিত্তিক প্রতিলিপি সরঞ্জাম ব্যবহার করে আপগ্রেড করুন

একটি সংস্করণ আপগ্রেড করার আরেকটি বিকল্প হ'ল ট্রিগার ভিত্তিক একটি প্রতিরূপ সরঞ্জাম ব্যবহার করছে। স্লোনি, বুকার্ডো এবং লন্ডিস্টের মতো।

এটি এমন বিকল্প যাটির পক্ষে কমপক্ষে ডাউনটাইম সম্ভব হওয়া প্রয়োজন তবে এটি কাজ করা সবচেয়ে কঠিন।

এটি করার জন্য আপনাকে মাস্টার-স্লেভ তৈরি করতে হবে যেখানে মাস্টারটি আপনার বর্তমান সংস্করণ (9.1) এবং দাসটি নতুন সংস্করণ (9.3)। তারপরে আপনি প্রথম সিঙ্কটি অপেক্ষা করুন (সিস্টেমটি এখনও উত্পাদনের সাথে রয়েছে), এর পরে আপনি ডাটাবেসের সাথে সংযুক্ত সবাইকে বন্ধ করে দিন (ডাউনটাইমটি এখানেই শুরু হয়), দাসকে ধরার জন্য অপেক্ষা করুন, এটি (দাস) মাস্টার হিসাবে প্রচার করুন এবং সমস্ত ক্লায়েন্ট / অ্যাপ্লিকেশনগুলি এই নতুন সংস্করণে পুনর্নির্দেশ করুন। এবং তুমি করে ফেলেছ.

স্লনি ডকুমেন্টেশন স্লোনি ব্যবহার করে পোস্টগ্র্যাস এসকিউএল আপগ্রেড করার জন্য একটি ধাপে ধাপে সরবরাহ করে

কোনটি নির্বাচন করতে হবে

ঠিক আছে, সর্বদা নির্ভর করে, আবার শুরু হচ্ছে:

  • ডাম্প + রিস্টোর সর্বাধিক নির্ভরযোগ্য, তবে সাধারণত সবচেয়ে ধীর এক (সমান্তরালতা যদিও বেশ ভাল ফলাফল দিতে পারে)
  • পিজি_আপগ্রেড অল্প ডাউনটাইমের জন্য সেরা বিকল্পগুলির মধ্যে একটি (যদি আপনি ব্যবহার করতে পারেন তবে সীমাবদ্ধতাগুলি দেখুন), এটি প্রায় কয়েক মিনিট সময় নেয় এমনকি বড় ডেটাবেসগুলিতেও
  • ট্রিগার অনুলিপিটি নিঃসন্দেহে একটাই যে কমপক্ষে ডাউনটাইম সম্ভব (শূন্যের কাছাকাছি) দেয় তবে এটি অর্জন করা সত্যিই কঠিন এবং আমি কেবল অভিজ্ঞ ব্যক্তিদের জন্যই পরামর্শ দিই (পোস্টগ্রিসএসকিউএল এবং প্রতিলিপি সরঞ্জাম উভয়)।

আমি সাহায্য করতে পারে আশা করি। শুভকামনা।


পিজি_আপগ্রেড কি 8.4.17 থেকে 9.3 পর্যন্ত কাজ করবে?
জনমারলিনো

@ জনমারলিনো: হ্যাঁ, পিজি আপগ্রেড ৮.৩ বা উচ্চতর সংস্করণ থেকে আপগ্রেড করতে পারে (এতে 8.3, 8.4, 9.0, 9.1, 9.2, ...) রয়েছে।
ম্যাথিউস ওল

"নতুন (9.3) সংস্করণটির বাইনারি ব্যবহার করা" এটি প্রয়োজনীয় নাও হতে পারে .. আমি কমপক্ষে এটি কিছু না করে কাজ করার জন্য পেয়েছি।
থিসফায়ার

@ থাইফায়ার এটি উভয় সংস্করণের উপর নির্ভর করে (পুরানো এবং নতুন সংস্করণ), এটি কাজ করতেও পারে বা নাও পারে। আসলে এটি বেশিরভাগ ক্ষেত্রেই কাজ করবে, কিছু ত্রুটি বার্তা ব্যতীত যা সাধারণত ইনগ্রোর করা যায় ... সরকারী পদ্ধতিটি হ'ল নতুন সংস্করণের বাইনারিটি ব্যবহার করা!
ম্যাথিউস ওল

আপনি pg_dumpallএকসাথে সমস্ত ডেটাবেস ডাম্প করতে ব্যবহার করতে সক্ষম হতে পারেন।
ম্যাথিউউ

7

পোস্টগ্রেস 9.1 থেকে 9.3 এ আপগ্রেড করার জন্য এই পদক্ষেপগুলি অনুসরণ করুন:

  1. প্রথমে উবুন্টুর জন্য নিম্নলিখিত বিষয়বস্তুর সাথে একটি /etc/apt/sources.list.d/pgdg.list ফাইল তৈরি করুন:

    deb http://apt.postgresql.org/pub/repos/apt/ saucy-pgdg main 
  2. নিম্নলিখিত চলমান কী যুক্ত করুন:

     wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
  3. পোস্টগ্রিস সহ বিকাশকারী সরঞ্জামগুলি ইনস্টল করুন:

    sudo apt-get install postgresql-9.3 postgresql-contrib-9.3 postgresql-server-dev-9.3 pgadmin3
  4. আমাদের ইনস্টলটি নিশ্চিত করতে, আমরা "sudo pg_lsclusters" প্রবেশ করবো এবং পোস্টগ্র্রেএসকিউএল আমাদের দুটি সংস্করণ চলমান দেখতে পাব।

  5. Postgressql পরিষেবা বন্ধ করুন:

    sudo service postgresql stop
  6. 9.3 ইনস্টল দ্বারা নির্মিত ডিফল্ট 9.3 ক্লাস্টারটি মুছুন।

    sudo pg_dropcluster --stop 9.3 main
  7. বিদ্যমান 9.1 ক্লাস্টার থেকে একটি নতুন 9.3 ক্লাস্টার তৈরি করুন।

    sudo pg_upgradecluster 9.1 main
  8. নিশ্চিত করুন যে নতুন ক্লাস্টার লোড হয়েছে এবং আমরা পোস্টগ্রিসকিউএল 9.3 চালাচ্ছি।

    sudo service postgresql start 9.3
  9. সবকিছু যদি 9.1 ক্লাস্টারে পড়ে যায়।

    pg_dropcluster --stop 9.1 main

আরও তথ্যের জন্য এই লিঙ্কটি দেখুন


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.